node.js - Sequelize 无法将虚拟属性添加到 findAll 响应
问题描述
我有两个查询如下:
getPosts - models.Posts.findAll({where: userId});
getPost-models.Post.findByPk(id);
Posts 有一个虚拟属性 postTemplate ,它本质上是一个在前端和后端之间传递的值对象,这样:
postTemplate: {
type: DataTypes.VIRTUAL
}
API 函数(在这种情况下恰好是 GraphQL 解析器)在返回数据之前附加了虚拟属性。
let post = models.Post.findByPk(id);
post.postTemplate = "blah blah blah";
return post;
现在,这行得通。但是,当我尝试对 getPosts (findAll) 执行相同操作时,它似乎不想附加该属性。
我在循环中和通过键都试过了,但都无济于事。我相信我误解了批量记录的返回方式。
let posts = models.Post.findall();
posts.forEach(async (post) => {
post.postTemplate = "blah blah blah";
})
return posts; // this doesn't work
解决方案
你可以试试这样的东西吗?我怀疑它不起作用,因为它是一个异步函数
async function(req, res) {
let posts = await models.Post.findall();
posts.forEach((post) => {
post.postTemplate = "blah blah blah";
})
return posts;
}
推荐阅读
- deno - 除非重新启动服务器,否则 Denjucks 模板中的更改不会反映在刷新上
- python - 如何在不自动运行的情况下导入 Jupyter notebook?
- javascript - 如何以角度在 NgFor 中获取下拉数据?
- python - discord.py 重写 - 如何检查 discord.Member 是否是机器人
- python - 从剪贴板读取二进制数据
- html - HTML/CSS 在表格中获取按钮和文本以及其他格式的正确顺序
- vue.js - 如何让 SPA 导航与使用 innerHTML 作为内容的外部框架一起工作
- mysql - 查询返回关于列的错误信息
- java - 如何为 KTable 多对一进行 leftJoin?
- javascript - ReactJs / Typescript:如何扩展状态接口