2016-08-04 181 views
0

我第一個詢問從哪裏獲得這樣看對象的列表:JS sequelize嵌套查詢/遍歷結果

{ 
    id 
    idmarker 
    idcategory 
} 

MarkerCategories.findAll({where: {idmarker: data.dataValues.id}}) 

這將讓我一個結果與屬於所提供的標記ID的categoryIds。 我如何保存結果集的id屬性到一個數組命名的ID,這樣我可以運行下面的查詢來獲取實際的類別說明:

Categories.findAll({where: {id: { $in: ids}}}); 

回答

0

如果您已經CategoriesMarkers模型之間定義的關聯,你可以做到以下幾點:

Markers.findAll({where: { id: markerId }, include: [ Categories ]}) 

,將返回一個標記與相關分類

+0

我不是100%確定如何設置我目前的表結構的關聯: '標記{ID,名稱} 類別{ID,名稱} markers_categories {ID,idmarker,idcategory} ' 不過,我發現在這段時間裏以下解決方案: '返回MarkerCategories.findAll({其中: {idmarker:data.dataValues.id}})。then(function(data)var ids = new Array(); data.map(item => ids.push(item.dataValues.idcategory)); return Categories.findAll({where:{id:{$ in:ids}}}); }); ' – Chris

+0

您的解決方案可以工作,但這是一種錯誤的方式:它會執行2個查詢;代碼的大小;正確的方法是定義關聯和使用包含作爲上面的代碼。你的關聯看起來像這樣:'Markers.belongsToMany(Categories,{through:MarkerCategories,foreignKey:idmarker,otherKey:idcategory});'。欲瞭解更多信息,請參閱文檔http://docs.sequelizejs.com/en/latest/docs/associations/#belongs-to-many-associations –