2017-05-13 91 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無需更改任何內容。