Sql sequelize hasOne关联如何在数据库级别工作?
我有一个用户和任务模型。现在我希望每个用户只有一个任务 我以这种方式在用户模型中使用了hasOne关联Sql sequelize hasOne关联如何在数据库级别工作?,sql,node.js,postgresql,express,sequelize.js,Sql,Node.js,Postgresql,Express,Sequelize.js,我有一个用户和任务模型。现在我希望每个用户只有一个任务 我以这种方式在用户模型中使用了hasOne关联 // models/Task.js class Task extends Model { ... 创建关联时正在执行的SQL查询 "UserId" INTEGER REFERENCES "users" ("id") ON DELETE SET NULL ON UPDATE CASCADE, PRIMARY KEY ("i
// models/Task.js
class Task extends Model {
...
创建关联时正在执行的SQL查询
"UserId" INTEGER REFERENCES "users" ("id") ON DELETE SET NULL ON UPDATE CASCADE, PRIMARY KEY ("id"))
现在,在我的任务createapi中,我将其称为
// routes/tasks.js
...({
const task = await Task.create(req.body);
await req.user.setTask(task)
....
})
当我第一次叫它时,我希望它能起作用。但当我第二次打电话时,我希望它会破裂,因为这里有1:1的关系,但事实并非如此
我多次调用此函数,发现为同一用户创建了多个任务
所以sequelize ORM只是在我的任务表上创建了一个userId外键?它同样适用于HasMany和belongsTo
如果这些关联对这些不同的关联执行相同的操作(在目标表中创建foriegnKey),那么这些关联的用途到底是什么
如何在这里使用hasOne创建真正的一对一关系
// routes/tasks.js
...({
const task = await Task.create(req.body);
await req.user.setTask(task)
....
})