Thinky.io 有很多没有保存新的模型实例
Thinky.io hasMany not saving new model instances
我正在努力使用 Thinky.io 加入我的用户和工作模型。
在文档中,这里有一个例子,说明hasMany如何将帖子附加到作者身上。 我希望我们的用户使用相同的设置:理想情况下,每个用户都有一个工作字段,可以保存他们感兴趣的所有工作。 这就是我设置用户-作业关系的方式:User.hasMany(Job, 'jobs', 'id', 'userId')。这是我对添加工作功能所了解的:
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的新手,所以请告诉我如何澄清我的问题。谢谢!
有两种方法可以存储您描述的关系。您可以从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});
你说你试图推动这项工作。如果您仍然遇到问题,您能分享一下该代码的外观吗?
相关文章:
- 将JavaScript变量保存到Rails模型
- 一次保存多个主干模型
- 保存两个模型(属于第三个模型)和一个提交
- 主干模型:保存时保留集合
- Ember.js模型保存不向服务器发送数据
- 骨干 js 模型 保存不止一次
- 扩展主干模型保存
- 主干模型保存阻止 UI
- 骨干模型保存问题
- 主干模型保存:将字段作为“模型”子对象发送
- 测试Backbone.js模型保存使用Sinon不调用成功回调
- 使用相同的ng模型保存动态生成的输入网格
- 如何在cakeHP中为关联模型保存多个字段
- 如何使用主干模型保存发送额外的数据到服务器
- 主干模型保存
- 主干模型保存和回调问题
- 模型.保存设置url并在成功时进行回调
- 猫鼬模型保存回调的问题
- 如何将模型保存到数据库
- 主干:模型保存上的两个更改事件