Thinky.io还没有保存新的模型实例

时间:2016-03-23 00:29:36

标签: javascript rethinkdb thinky

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

在文档中,有一个示例here,其中 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的新手,所以让我知道如何澄清我的问题。谢谢!

1 个答案:

答案 0 :(得分:0)

存储您描述的关系有两种方法。您可以从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});
你说你试过推动工作。如果你还有问题,可以分享一下代码的样子吗?