Sequelize 使用外键创建记录

spo*_*bob 5 sequelize.js

假设条件是用户有很多项目

var User = sequelize.define('user', {
  id: { type: Sequelize.INTEGER, primaryKey: true},
  name: Sequelize.STRING,
}, {
  underscored: true,
  constraints: false
})

var Project = sequelize.define('project', {
  id: { type: Sequelize.INTEGER, primaryKey: true},
  title: Sequelize.STRING,
}, {
  underscored: true,
  constraints: false
})

Project.belongsTo(User)
User.hasMany(Project)
Run Code Online (Sandbox Code Playgroud)

如果我已经在数据库中有用户记录

{ id: 1, name: "spondbob" }
Run Code Online (Sandbox Code Playgroud)

如何与该用户创建项目?我在某个地方看到我们可以在创建项目时执行此操作

{
  id: 1,
  title: "Project 1",
  user_id: 1
}
Run Code Online (Sandbox Code Playgroud)

但是,除了直接提及外键之外,还有其他优雅的方式来设置用户吗?

我也知道我可以创建项目并执行,project.setUser(user)但问题是user_id外键设置为 NOT NULL。在这种情况下,我必须user_id在创建项目时添加,而不是在创建后设置它。

另外,如果我需要创建多个项目并将其分配给一个用户,我该如何实现呢?

Mik*_*las 0

{
  id: 1,
  title: "Project 1",
  user_id: 1
}
Run Code Online (Sandbox Code Playgroud)

如果您指定了外键名称,上面的代码才有效,如下所示:

Project.belongsTo(User, {foreignKey: 'user_id'})
Run Code Online (Sandbox Code Playgroud)