Javascript Node.js,带书架;为具有ID数组的多对多关系设置值

Javascript Node.js,带书架;为具有ID数组的多对多关系设置值,javascript,node.js,express,bookshelf.js,knex.js,Javascript,Node.js,Express,Bookshelf.js,Knex.js,我使用Node.js和Bookshelf来设置API。请求中的JSON如下所示 { conversation: { user_ids: [1, 2, 3, 4] } } 对话对象如下所示: var Conversation = storeManager.bookshelf.Model.extend({ tableName: 'conversations', users: function() { this.belongsToMany(User) } }

我使用Node.js和Bookshelf来设置API。请求中的JSON如下所示

{
  conversation:  {
    user_ids: [1, 2, 3, 4]
  }
}
对话对象如下所示:

var Conversation = storeManager.bookshelf.Model.extend({
  tableName: 'conversations',

  users: function() {
    this.belongsToMany(User)
  }

})
var User = storeManager.bookshelf.Model.extend({
  tableName: 'users',

  conversations: function() {
    return this.belongsToMany(Conversation)
  }
})
用户如下所示:

var Conversation = storeManager.bookshelf.Model.extend({
  tableName: 'conversations',

  users: function() {
    this.belongsToMany(User)
  }

})
var User = storeManager.bookshelf.Model.extend({
  tableName: 'users',

  conversations: function() {
    return this.belongsToMany(Conversation)
  }
})
数据库有一个conversations and users表以及一个conversations\u users表,该表具有
用户id
对话id
字段

因此,我一直在浏览文档,我正在努力找出如何创建一个对话对象,该对象与具有给定ID的现有用户有关系

这是我的控制器到目前为止的配置

ConversationController.prototype.create = function(req, res, next) {
  // Create the conversation
  Conversation.forge().set('users', req.body['conversation']['user_ids']).save().then(function(model) {
    req.conversation = model
    next()
  }).catch(function(err) {
    res.status(400).send(err)
  })
}

您需要在集合上使用add方法,如下所示:

Conversations_Users.add({userId:1,conversation_id:1});
然后打电话

Conversations_Users.save()

可以我不想单独录制这些唱片。我希望有一种简单的方法可以在保存之前将它们添加到记录中。对于主动模型,这是可能的。除非第一条记录保存,否则它不会在联接表中创建记录。然后,如果您尝试加入的某个记录不存在,它将保留并删除以前保存的所有记录。为您提供一点事务控制,这样您就不会有不完整的记录。哦,好吧,我想我得自己动手了。收藏是自动创建的吗?它一定是一个集合还是一个模型?