Sequelize hasMany include返回对象而不是数组

时间:2019-01-14 12:19:02

标签: javascript associations sequelize.js

模型定义:

sequelize.define('Parent', {name: DataTypes.STRING})
sequelize.define('Child', {name: DataTypes.STRING})

协会:

Parent.hasMany(Child, {
  foreignKey: 'parent_id',
  as: 'child'
})

Child.belongsTo(Parent)

包含功能:

Parent.findByPk(pk, {
  include: [{
    model: Child,
    as: 'child',
    where: {
      name: 'benny'
    }
  }]
})

返回的内容(正常行为):

{
  "id": 1,
  "name": "parent name",
  "child": [
    {
      "id": 2
      "name": "benny",
      "parent_id": 1
    }
  ]
}

我希望它返回什么(我在文档中看不到任何支持或提及)

{
  "id": 1,
  "name": "parent name",
  "child": {
    "id": 2
    "name": "benny",
    "parent_id": 1
  }
}

差异为Child配置为作为对象返回

有人遇到过这个挑战吗?

1 个答案:

答案 0 :(得分:0)

http://docs.sequelizejs.com/manual/tutorial/associations.html

Parent.hasOne(孩子,{   foreignKey:'parent_id',   如:“孩子” })

否则它是一个数组,因为父级可以有多个。

Parent.hasMany(Child,{   foreignKey:'parent_id',   如:“儿童” })

如果您真的只关心第一个孩子或单身孩子。.Parent.children [0]

您可以将自己的函数添加到称为child的Parent上,该函数仅返回children数组中的第一个函数。还是最新的日期。.取决于您的功能。

相关问题