我在创建帖子并尝试将其与当前用户关联时出错:
SequelizeDatabaseError: Field 'userId' doesn't have a default value
这是我的方法
exports.createPost = async (req, res) => {
const {title, content, userEmail} = req.body;
const user = await User.findOne({
where: {
email: userEmail
}
})
if (user) {
const post = await Post.create({
title, content, image: req.file.originalname, userId: user.id
})
res.json(post)
}
}
也尝试过
user: user
。这是我的用户模型
'use strict';
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
username: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING
}, {});
User.associate = function(models) {
User.hasMany(models.Post)
};
return User;
};
这是post模型,其中声明了belongsTo关系
'use strict';
module.exports = (sequelize, DataTypes) => {
const Post = sequelize.define('Post', {
title: DataTypes.STRING,
content: DataTypes.STRING,
image: DataTypes.STRING
}, {});
Post.associate = function(models) {
Post.belongsTo(models.User, {
onDelete: 'CASCADE'
})
};
return Post;
};
最佳答案
你没有以正确的方式定义关联。你可以这样做。
用户模型
'use strict';
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
id: {
type: DataTypes.INT,
autoIncrement: true,
primaryKey: true,
},
username: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING
}, {});
User.associate = function (models) {
User.hasMany(models.Post, {
foreignKey: 'userId',
onDelete: 'CASCADE'
})
};
return User;
};
后模型
'use strict';
module.exports = (sequelize, DataTypes) => {
const Post = sequelize.define('Post', {
id: {
type: DataTypes.INT,
autoIncrement: true,
primaryKey: true,
},
userId: DataTypes.INT,
title: DataTypes.STRING,
content: DataTypes.STRING,
image: DataTypes.STRING
}, {});
Post.associate = function (models) {
Post.belongsTo(models.User, {
foreignKey: 'userId',
onDelete: 'CASCADE'
})
};
return Post;
};
查询就像:
const { title, content, userEmail } = req.body;
const user = await User.findOne({
where: {
email: userEmail
},
raw: true
})
if (user) {
const post = await Post.create({
title, content, image: req.file.originalname, userId: user.id
})
res.json(post)
}
关于node.js - Sequelize : Error creating a post and associating it with the current user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62326011/