1

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 的查询执行,并直接在数据库中尝试了 Sequelize 为这个特定调用所做的原始查询,它返回了一个记录列表,正如它应该的那样。但是当我通过 API 查询它时,它只返回一个对象而不是一个数组。

4

2 回答 2

0

原来来自 Sequelize 的查询需要标记为raw. 因此,在sequelize对象中,您必须包含raw: true参数。不幸的是,这将导致返回一个 Sequelize 本机对象(具有defaultValues道具的对象)。.get()您可以通过调用Sequelize 的结果将其序列化为普通的 JavaScript 对象。

因此,总而言之,您必须添加与道具raw: true相同的级别,如下所示:include

{
  include: [{ model: ...],
  raw: true 
}
于 2020-07-27T08:30:12.653 回答
-1

固定的:

.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,
于 2021-03-04T22:49:26.263 回答