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
模型添加到后续查询参数中来包含它:
include: [{ model: context.app.service('connections').Model, as: 'connections' }],
最终结果是
connections
响应中的 user
属性是单个对象而不是对象数组。
我记录了 Sequelize 的查询执行,并直接在数据库中尝试 Sequelize 为这个特定调用执行的原始查询,它返回一个记录列表,正如它应该的那样。但是当我通过 API 查询它时,它只返回一个对象而不是数组。
原来来自 Sequelize 的查询需要标记为
raw
。
因此,在 sequelize
对象中,您必须包含 raw: true
参数。不幸的是,这将导致返回一个 Sequelize 本机对象(具有 defaultValues
属性的对象)。您可以通过对 Sequelize 的结果调用 .get()
将其序列化为普通 JavaScript 对象。
所以,总而言之,你必须将
raw: true
添加到与 include
属性相同的级别,如下所示:
{
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,
添加包含的表:- 子表
分开:正确