我目前正在使用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
答案 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不需要更改任何内容。