我很难加入我的用户和工作模型使用Thinky.io。
在文档中,有一个关于这里如何将文章附加到作者的hasMany示例。我希望为我们的用户设置相同的设置:理想情况下,每个用户都有一个可以保存他们感兴趣的所有作业的作业字段。这就是我如何建立用户-工作关系:User.hasMany(作业,‘作业’,'id','userId')。这就是我使用add作业函数获得的结果:
module.exports.addJob = function*(next) {
this.type = 'application/json';
var user = yield User.get("473ade1a-d2df-4618-9a53-ed68fa98f169").run();
const joins = yield User.get(user.id).getJoin().run();
const jobData = yield parse(this);
const job = new Job(jobData);
user.jobs = job;
var userJoined = yield user.saveAll({jobs: true});这只是将user.jobs设置为用户单击的任何当前作业。我试着把新工作推到user.jobs上,但这也行不通。我可以看到控制台中的信息,但据我所知,这种关系不会保存到数据库中。以前有人处理过这个问题吗?我是StackOverflow的新手,所以让我知道如何澄清我的问题。谢谢!
发布于 2016-05-22 19:36:08
有两种方法来存储你描述的关系。您可以从User端或Job端攻击这个问题。对我来说,约伯看上去更直观,但我会双管齐下。要记住的关键是,关系是虚拟的。User上没有存储在数据库中的作业数组,它只是在运行时为您生成的。
因此,要存储作业,只需:
const job = new Job(jobData);
job.userId = user.id; // set the user id on the relationship
var savedJob = yield job.save();因此,现在作业保存在数据库中,并与用户相关联。如果你要跑:
var user = yield User.get("473ade1a-d2df-4618-9a53-ed68fa98f169").getJoin().run();用户将包含一个数组,其中包含您刚才运行的一个作业。但也许这不是你想要的。如果您想一次创建并保存与用户关联的作业,可以使用saveAll执行示例的路径,但要确保您保存的是数组,而不仅仅是作业。
const job = new Job(jobData);
user.jobs = [job];
var userJoined = yield user.saveAll({jobs: true});你说你试过推这份工作。如果你仍然有问题,你能分享一下代码的样子吗?
https://stackoverflow.com/questions/36167735
复制相似问题