Sequelize hasMany association returns 只有一个对象
Sequelize hasMany association returns only a single object
hasMany
协会应该return 对象列表,权利?我有一条 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' }],
最终结果是 user
响应中的 connections
属性 是单个对象而不是对象数组。
我记录了 Sequelize 的查询执行,并直接在数据库中尝试了 Sequelize 为这个特定调用所做的原始查询,它 return 是一个记录列表,它应该如此。但是当我通过 API 查询它时,它 return 只是一个对象而不是数组。
原来来自 Sequelize 的查询需要标记为 raw
。
因此,在 sequelize
对象中,您必须包含 raw: true
参数。不幸的是,这将导致返回一个 Sequelize 本机对象(具有 defaultValues
属性的对象)。您可以通过对 Sequelize 的结果调用 .get()
将其序列化为普通的 JavaScript 对象。
因此,总而言之,您必须在与 include
属性相同的级别上添加 raw: true
,如下所示:
{
include: [{ model: ...],
raw: true
}
固定:
.findAll({
raw : false // <===
})
文档:https://sequelize.org/master/manual/raw-queries.html
// Only Set this to true if you don't have a model definition for your query.
raw: false,
hasMany
协会应该return 对象列表,权利?我有一条 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' }],
最终结果是 user
响应中的 connections
属性 是单个对象而不是对象数组。
我记录了 Sequelize 的查询执行,并直接在数据库中尝试了 Sequelize 为这个特定调用所做的原始查询,它 return 是一个记录列表,它应该如此。但是当我通过 API 查询它时,它 return 只是一个对象而不是数组。
原来来自 Sequelize 的查询需要标记为 raw
。
因此,在 sequelize
对象中,您必须包含 raw: true
参数。不幸的是,这将导致返回一个 Sequelize 本机对象(具有 defaultValues
属性的对象)。您可以通过对 Sequelize 的结果调用 .get()
将其序列化为普通的 JavaScript 对象。
因此,总而言之,您必须在与 include
属性相同的级别上添加 raw: true
,如下所示:
{
include: [{ model: ...],
raw: true
}
固定:
.findAll({
raw : false // <===
})
文档:https://sequelize.org/master/manual/raw-queries.html
// Only Set this to true if you don't have a model definition for your query.
raw: false,