Node.js 对多对多文档进行续集

Node.js 对多对多文档进行续集,node.js,many-to-many,sequelize.js,Node.js,Many To Many,Sequelize.js,我正在尝试使用node和sequelize在项目和任务之间创建多对多关联。我不知道如何使用变量名创建新的“任务”,这些变量名可以作为项目的数组进行累加。setTasks的功能与此处文档给出的示例相同,但缺少很多细节 以下是他们给出的示例: Project.hasMany(Task) Task.hasMany(Project) Project.create()... Task.create()... Task.create()... // save them... and then: proj

我正在尝试使用node和sequelize在项目和任务之间创建多对多关联。我不知道如何使用变量名创建新的“任务”,这些变量名可以作为项目的数组进行累加。setTasks的功能与此处文档给出的示例相同,但缺少很多细节

以下是他们给出的示例:

Project.hasMany(Task)
Task.hasMany(Project)

Project.create()...
Task.create()...
Task.create()...

// save them... and then:
project.setTasks([task1, task2]).success(function() {
// saved!

})

我不知道你所说的“变量名”到底是什么意思

但是,sequelize测试套件中的一个示例(我的注释如下所示):

    // Define the models
    this.User = this.sequelize.define('User', { username: DataTypes.STRING });
    this.Task = this.sequelize.define('Task', { title: DataTypes.STRING, active: DataTypes.BOOLEAN });

    // Setup associations
    this.User.hasMany(this.Task);
    this.Task.hasMany(this.User);

    // using promises, sync the database, then create a user and two tasks
    return this.sequelize.sync({ force: true }).then(function() {
      return Promise.all([
        self.User.create({ username: 'John'}),
        self.Task.create({ title: 'Get rich', active: true}),
        self.Task.create({ title: 'Die trying', active: false})
      ]);
    }).spread(function (john, task1, task2) {
      // This line below is only relevant to the tests.
      self.tasks = [task1, task2];

      // Using the created (and saved) tasks and user, set the tasks and return the promise
      return john.setTasks([task1, task2]);
    });
编辑我同意sequelize文档仍然太轻,但我发现到目前为止它是一个很好的框架。如果有疑问,我建议您阅读单元测试,或者编写自己的测试来确认行为


编辑注意,您也可以使用
.addTask
.removeTask
而不是简单地将它们全部设置。请参见

您能在一条语句中同时执行插入和设置引用吗?不,我不这么认为。您需要使用如图所示的承诺,以等待创建的任务存在于数据库中,然后再对用户进行设置。看起来您可以在
setTasks([task1,task2],{save:false})中执行此操作。