SequelizeJS的primaryKey相关包括

时间:2017-05-13 14:00:44

标签: node.js rest express django-rest-framework sequelize.js

我目前正在使用REST API,与SequelizeJS和Express合作。

我习惯了Django Rest Framework,我正在尝试找到类似的功能: 我有一个表User和一个表PhoneNumber。 我希望能够以JSON方式返回用户,包括其电话号码的主键列表,如下所示:

{
  "firstName": "John",
  "lastName": "Doe",
  "phoneNumbers": [23, 34, 54],
}

有没有办法在续集中简单有效地完成这项工作,或者我必须编写改变字段的函数,如:

"phoneNumbers": [
    { "id": 23, "number": "XXXXXXXXXX" },
    { "id": 34, "number": "XXXXXXXXXX" },
    { "id": 54, "number": "XXXXXXXXXX" }
      ]

进入上面的内容?

谢谢你, Giltho

1 个答案:

答案 0 :(得分:0)

Sequelize finder-methods accept和option attribute,它允许您定义应查询的模型的哪些属性。见http://docs.sequelizejs.com/manual/tutorial/querying.html#attributes

这也适用于连接:

User.all({
  include: [
    { model: Phonenumber, attributes: ['id']}
  ]
})
.then(function(users) {
})

将执行

SELECT user.*, phonenumber.id FROM user INNER JOIN phonenumber ON ...

但是要在你的api响应中将phonenumbers转换为整数数组[1,2,...],你仍然需要手动将id映射到数组中,否则你得到一个[{"id": 1}, {"id": 2},...]的数组。

但实际上我建议不要这样做。对象数组是比整数数组更具前瞻性的选项。因为如果您决定某天使用其他属性扩展phonenumber对象,您的api-client不需要更改任何内容。