【发布时间】:2020-06-21 05:39:51
【问题描述】:
假设条件是用户有很多项目
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)
如果我已经在数据库中有用户记录
{ id: 1, name: "spondbob" }
如何使用该用户创建项目?我在某处看到我们可以在创建项目时这样做
{
id: 1,
title: "Project 1",
user_id: 1
}
但是除了直接提及外键之外,还有其他优雅的方式来设置用户吗?
我也知道我可以创建项目并执行project.setUser(user),但问题是user_id 外键设置为NOT NULL。在这种情况下,我必须在创建项目时添加user_id,而不是在创建后设置它。
补充一点,如果我需要创建多个项目并将其分配给一个用户,我该如何实现一个?
【问题讨论】:
-
您将无法一步创建新的
Project并链接到现有关联。您必须执行Project.create(obj)并在回调中运行projectInstance.setUser(user) -
@mcranston18 如果我执行
Project.create(obj)而不提及外键user_id,我的数据库引擎将抛出一个错误,因为外键设置为NOT NULL。我不认为删除 NOT NULL 约束是一个好主意,只是以后才能做projectInstance.setUser(user)。 -
您找到解决方案了吗?
标签: sequelize.js