2017-05-13 62 views
0

我目前正在使用SequelizeJS和Express工作在REST API上。SequelizeJS primaryKey相关包括

我习惯了Django Rest Framework,我试图找到类似的功能: 我有一个表User和一个表PhoneNumber。 我希望能够在JSON返回用户,包括其电话号码的primarykeys像这样的列表:

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

有没有办法在sequelize简单,高效地做到这一点还是我来写功能,转换字段如:

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

成什么我上面?

谢谢 Giltho

回答

0

Sequelize取景器的方法接受并选择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 ... 

但打开PHONENUMBERS到您的API响应整数[1,2,...]数组,你仍然必须将ID手动映射到数组中,否则您将得到一个数组[{"id": 1}, {"id": 2},...]

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