1

我正在努力使用 Thinky.io 加入我的用户和工作模型。

在文档中,这里有一个示例说明hasMany如何将帖子附加到作者。我希望我们的用户使用相同的设置:理想情况下,每个用户都有一个工作字段来保存他们感兴趣的所有工作。这就是我设置用户-工作关系的方式: User.hasMany(Job, '工作','id','userId')。这是我的 add Job 功能所获得的:

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 的新手,所以让我知道如何澄清我的问题。谢谢!

4

1 回答 1

0

有两种方法可以存储您描述的关系。您可以从User侧面或Job侧面解决问题。对我来说,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();

user 将包含一个数组,其中包含您刚刚运行的一项作业。但也许这不是你想要的。如果您希望能够一次性创建和保存与用户关联的作业,您可以使用示例的路线,saveAll但请确保您保存的是数组,而不仅仅是作业。

const job = new Job(jobData);
user.jobs = [job]; 
var userJoined = yield user.saveAll({jobs: true});

你说你试图推动这份工作。如果您仍然遇到问题,您能否分享该代码的外观?

于 2016-05-22T19:36:08.633 回答