我有两个模型User和Post,定义了如下关联模型:
Post.belongsTo(models.User)
这意味着帖子模型属于用户,并且用户有很多帖子。因此,数据库中的posts表必须具有用于此关联的键userId。
我使用以下代码创建分配给用户的帖子:
Post.create({
UserId: 1,
})
它将正确的数据插入数据库。
但是当我更改代码时它不起作用:
Post.create({
userId: 1,
})
为什么模型使用大写的UserId而不是userId?
答案 0 :(得分:1)
在模型上未定义列时,将使用模型名称并在末尾添加Id
来生成关联字段。您可以定义模型名称的小写字母,也可以定义如下外部字段:
module.exports = (sequelize, DataTypes) => {
const Post = sequelize.define('Post', {
//
userId: { //this is how you are going to use it on sequelize
field: 'user_id', // this is how is goig to save it on the db, underscore for example
type: DataTypes.DATE
},
});
Post.associate = (models) => {
Post.belongsTo(models.User, { as: 'User', foreignKey: 'user_id' });
};
return Post;
};