sequelize.js - 如何在数据插入期间正确定义 Sequelize 关联
问题描述
我正在尝试 Sequelize 关联,但遇到了问题。
我有两个模型
class User extends Model { }
User.init(
{
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.STRING,
},
name: DataTypes.STRING,
}, {/** */ });
class Book extends Model { }
Book.init(
{
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.STRING,
},
name: DataTypes.STRING,
}, {/** */ });
Book.belongsTo(User, { as: 'owner' });
想象一下,我有这本书的用户,我如何将用户与这本书关联起来,以便我总是可以从这本书中得到所有者?
我在想
const user = await User.findByPK(....);
const newBook = Book.create({
name:"BookName",
owner:user.id //But this isn't working
});
解决此问题的最佳方法是什么?谢谢
解决方案
用别名定义关联意味着Book
拥有ownerId
字段。
来自官方文档:
定义别名比简单地为外键指定自定义名称更强大。举个例子可以更好地理解这一点:
Ship.belongsTo(Captain, { as: 'leader' }); // This creates the `leaderId` foreign key in Ship.
请参见关联别名和外键
所以你应该Book
这样创建:
const newBook = Book.create({
name:"BookName",
ownerId: user.id
});
推荐阅读
- wordpress - Wordpress 联系表 7 重定向延迟
- android - 在 Raspberry Pi 3 上通过 GPU 播放 Android Things 视频
- javascript - Hyperledger Sawtooth:Javascript 中的事务处理器
- vba - VBA:在运行时加载自定义功能区并访问
- batch-file - 检查文件是否存在并检查文件中的第一行
- php - Laravel 5.5.40 文件上传不起作用
- postgresql - PostgreSQL + POSTGIS
- python - 在 Alexa 技能中删除匹配的样本话语
- fiware - 无法解析主机:dev-fiwr-svc-01.tid.es
- image - 创建 AMI 后无法使用 VNC 连接到 AWS ubuntu 实例