node.js - sequelize 不包括 model.create 上的用户
问题描述
创建帖子时,Sequlelize 不会返回关联的用户。这是路由器。
我也参考了文档。
https://sequelize.org/master/manual/associations.html#creating-with-associations
createPost: async (req: any, res: Response) => {
const postData = {
title: req.body.title,
postContent: req.body.postContent,
authorId: req.session.user.id
};
await models.Post.create(postData, {
include: [{ model: models.User, as: "author" }]
})
.then(post => {
res.status(200).send({
message: "post created",
post: post
});
})
.catch(err => {
res.status(401).send({
message: `Something went wrong`,
error: err
});
});
console.log(req.body);
}
我不确定为什么这不起作用,因为这条路线使用相应用户的用户名获取帖子
getPosts: async (req: Request, res: Response) => {
await models.Post.findAll({
include: [
{ model: models.User, as: "author", attributes: ["username"] },
{ model: models.Likes }
],
order: [["createdAt", "DESC"]],
limit: 6
}).then(posts => {
res.json(posts);
});
},
这是 Post 和 User 的模型。
用户.js
"use strict";
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define("User", {
username: DataTypes.STRING,
password: DataTypes.STRING,
email: DataTypes.STRING,
forget_password: DataTypes.STRING
});
User.associate = function (models) {
User.hasMany(models.Post, {
foreignKey: "authorId",
as: "author",
onDelete: "CASCADE"
});
};
return User;
};
Post.js
"use strict";
module.exports = (sequelize, DataTypes) => {
var Post = sequelize.define("Post", {
title: DataTypes.STRING,
postContent: DataTypes.STRING,
liked: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false
},
likeCounts: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
authorId: DataTypes.INTEGER
});
Post.associate = function (models) {
Post.belongsTo(models.User, {
as: "author",
foreignKey: "authorId",
onDelete: "CASCADE"
});
Post.hasMany(models.Likes, {
foreignKey: "resourceId",
timestamps: false,
onDelete: "CASCADE",
scope: {
type: "article"
}
});
};
return Post;
};
解决方案
这给了我想要的结果,所以这会起作用。
await models.Post.create(postData)
.then(post => {
models.Post.findOne({
where: {
id: post.id
},
include: [
{ model: models.User, as: "author", attributes: ["username"] },
{ model: models.Likes }
]
}).then(newPost => {
res.status(200).send({
message: "post created",
post: newPost
});
});
})
推荐阅读
- c# - 比较 Voctor.y
- nginx - Janus 的 Nginx 配置
- azure - How to find the superuser for a container in adls2
- c - 有没有办法根据用户输入创建循环?
- java - 如何在 FROM 子句中多次执行数据库函数
- java - java.lang.module.FindException:找不到模块 java.xml.bind
- c++ - 如何循环我的程序以不断询问字母,直到用户输入 Q 结束程序
- javascript - 是否有替代方法可以指定网站中使用的所有资产(如图像等)的确切位置?
- swift - 表格视图单元格的领域总和
- angular - 解密传入响应角度 9