gpt4 book ai didi

node.js - 如何让 sequelize getter 与 findAll 一起使用

转载 作者:行者123 更新时间:2023-12-03 22:33:35 26 4
gpt4 key购买 nike

例如,我有一个非常简单的模型:

const Blog = sequelize.define(
'Blog',
{
id: {
type: DataTypes.STRING,
primaryKey: true,
allowNull: false,
get() {
return this.getDataValue('id').toString();
}
},
},
)
我想将我的记录作为字符串返回 id,但它不起作用:
const blogs = Blog.findAll({ raw: true })
console.log(blogs)
返回带有 id 属性作为数字的博客列表。
任何想法为什么,如果这不是正确的方法,那会是什么?

最佳答案

如果您想为主键使用不同的类型,请确保设置 autoIncrement: false 。通常,您将使用 DataTypes.INTEGERDataTypes.UUID 作为主键类型,但也应使用 DataTypes.String。您需要为每一行插入一个唯一值。
如果要运行 getter,则需要删除 raw: true 。当您指定原始结果时,从数据库返回的列将直接映射到 JSON 对象,在这种情况下它们是数字。如果您想将结果映射回普通 JSON 对象而不是模型实例,您可以使用 Array.map()Instance.toJSON()
请注意,在您的示例中,您还省略了 await 或 thenable 语法,这是异步获取结果所必需的。

const blogs = await Blog.findAll();
const plainObjs = blogs.map((blog) => blog.toJSON());

关于node.js - 如何让 sequelize getter 与 findAll 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64266544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com