gpt4 book ai didi

sequelize.js - Sequelize hasMany 关联仅返回单个对象

转载 作者:行者123 更新时间:2023-12-03 22:21:20 25 4
gpt4 key购买 nike

hasMany 关联应该返回一个对象列表,权限?我有一个 user 记录和一些连接到它的 connections 记录。

模型 connections :

userId: {
field: 'user_id',
type: DataTypes.STRING,
allowNull: false
}

模型 users :
(users as any).associate = function associate(models: any) {
models.users.hasMany(models.connections, {
as: 'connections',
foreignKey: 'user_id'
});
};

我通过将 connections 模型添加到 sequelize 查询参数来包含它:
include: [{ model: context.app.service('connections').Model, as: 'connections' }],

最终结果是 connections 响应中的 user 属性是单个对象而不是对象数组。
我记录了 Sequelize 的查询执行,并直接在 DB 中尝试了 Sequelize 为这个特定调用所做的原始查询,它返回了一个记录列表,正如它应该的那样。但是当我通过 API 查询它时,它只返回一个对象而不是数组。

最佳答案

原来来自 Sequelize 的查询需要标记为 raw
因此,在 sequelize 对象中,您必须包含 raw: true 参数。不幸的是,这将导致返回一个 Sequelize native 对象(具有 defaultValues 属性的对象)。您可以通过对 Sequelize 的结果调用 .get() 将其序列化为普通的 JavaScript 对象。
因此,总而言之,您必须在与 raw: true 属性相同的级别上添加 include,如下所示:

{
include: [{ model: ...],
raw: true
}

关于sequelize.js - Sequelize hasMany 关联仅返回单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61532849/

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