Node.js 帆0.10&;多对多关联—获取所有关联数据,而不仅仅是第一个数据
我有两个具有多对多关联的模型。我关联这两个模型的代码运行良好(它创建了一个新的集合Node.js 帆0.10&;多对多关联—获取所有关联数据,而不仅仅是第一个数据,node.js,sails.js,waterline,Node.js,Sails.js,Waterline,我有两个具有多对多关联的模型。我关联这两个模型的代码运行良好(它创建了一个新的集合item\u languages\u language\u items,其中包含相应的文档)。但是,我很难获得特定项目的所有相关数据(语言)。我在用MongoDB // Item.js module.exports = { schema: true, autoPK: false, attributes: { uuid: { type: 'string'
item\u languages\u language\u items
,其中包含相应的文档)。但是,我很难获得特定项目的所有相关数据(语言)。我在用MongoDB
// 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'
}
}
}
存储在item\u languages\u language\u items
集合中的数据:
/* 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种关联语言 这似乎是
sails mongo
当前beta版实现中的一个缺陷,它阻止populate
使用自定义键正常工作。请同时,唯一的解决方案似乎是使用默认的MongoDB主键。谢谢您的回答!我在这里发布了一个问题:。同时,我将使用一个变通方法。在最新的吃水线中修复了这里提到的提交: