2014-03-25 62 views
2

我有2個模型具有多對多關聯。我的代碼關聯這兩個模型運行良好(它創建了一個新的集合item_languages__language_items與相應的文件裏面)。但是,我無法獲得特定項目的所有相關數據(語言)。我正在使用MongoDB。存儲在item_languages__language_items收集帆0.10和多對多關聯 - 獲取所有相關數據,而不僅僅是第一個

// Item.js 
module.exports = { 
    schema: true, 
    autoPK: false, 
    attributes: { 
     uuid: { 
      type: 'string', 
      primaryKey: true, 
      unique: true, 
      required: true, 
      uuidv4: true 
     }, 
     languages: { 
      collection: 'language', 
      via: 'items', 
      dominant: true 
     } 
    } 
} 

// Language.js 
module.exports = { 
    schema: true, 
    autoPK: false, 
    attributes: { 
     code: { 
      type: 'string', 
      primaryKey: true, 
      required: true, 
      minLength: 2, 
      maxLength: 2, 
      unique: true 
     }, 
     items: { 
      collection: 'item', 
      via: 'languages' 
     } 
    } 
} 

數據:

/* 0 */ 
{ 
    "language_items" : "es", 
    "item_languages" : "69e4f3a3-1247-4a06-ae2d-9df27ac9495b", 
    "_id" : ObjectId("5330bcebf8e0b61509c771d5") 
} 

/* 1 */ 
{ 
    "language_items" : "fr", 
    "item_languages" : "69e4f3a3-1247-4a06-ae2d-9df27ac9495b", 
    "_id" : ObjectId("5330bd26f8e0b61509c771d6") 
} 

/* 2 */ 
{ 
    "language_items" : "en", 
    "item_languages" : "69e4f3a3-1247-4a06-ae2d-9df27ac9495b", 
    "_id" : ObjectId("5330bedcc076355b09da3ccd") 
} 
ItemController.js

現在,我希望得到一個特定的項目與所有相關的語言:

Item 
    .findOne({uuid: '69e4f3a3-1247-4a06-ae2d-9df27ac9495b'}) 
    .populate('languages') 
    .exec(function (e, r) { 
     console.log(r.toJSON()); 
    }); 

但在這裏我得到我的只有一種關聯語言的項目,當我期望獲得3種關聯語言時。

回答

2

這似乎是sails-mongo的當前測試版實施中的一個錯誤,它使populate無法與自定義鍵一起正常工作。請post this to the sails-mongo issues forum!同時,唯一的解決方案似乎是使用默認的MongoDB主鍵。

+0

感謝您的回答!我在這裏發佈了一個問題:https://github.com/balderdashy/sails-mongo/issues/120。在此期間,我將使用一種解決方法。 – Etienne

+2

在最新的Waterline中修復了此處提及的提交:https://github.com/balderdashy/sails-mongo/issues/120 – particlebanana

相關問題