续集许多文档

时间:2013-12-03 01:32:34

标签: node.js many-to-many sequelize.js

我正在尝试使用节点和续集来创建项目和任务之间的多对多关联。我无法弄清楚如何创建具有变量名称的新“任务”,这些变量名称可以作为project.setTasks函数的数组累积,因为这里的文档给出了一个示例,其中缺少详细信息。 http://sequelizejs.com/documentation#associations-many-to-many

这是他们给出的例子:

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

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

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

})

1 个答案:

答案 0 :(得分:2)

我不确定你的意思是"变量名称"准确。

但是,here's来自续集测试套件的示例,如下所示复制了我的评论:

    // 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,而不是简单地设置它们。见the docs