2016-03-31 22 views
0

我的模型包含與其他模型的關聯,這些模型顯然只是與它們的ObjectId一起存儲的。我想知道的是,是否有辦法通過擴展所有協會或特定協會的選項。使用.findOne()擴展與Sails,Mongo和Waterline的關聯有沒有標準方法?

所以 '項目模式' 看起來像這樣(舉例):

module.exports = { 

    attributes: { 
    name: { 
     type: 'string', 
     required: true 
    }, 
    description:{ 
     type: 'string' 
    }, 
    project: { 
     model: 'project', 
     required: true 
    }, ... 

當你這樣做: '項'

item.save(function(error, item) { ... }) 

它會自動擴展包含在所有關聯但是,如果您在這個選項通過它不會擴大:

item.save({ populate: false }, function(error, item) { ... }) 

我不知道爲什麼「拯救」會自動展開,我很好奇,如果有辦法有「findOne」也自動擴大。我知道你不想總是展開,因爲它在內存上可能很難,但是這可能會在某些時候返回完全展開的對象。

回答

0

您想填充所有關聯的模型?

Model 
    .findOne({name:''}) 
    .populateAll() 
    .exec(
     function(error,result){} 
    ) 

它將填充所有關聯。如果你只想填充一個,你可以用

Model 
    .findOne({name:''}) 
    .populate('project') 
    .exec(
     function(error,result){} 
    ) 

更多。您可以使用「選擇」,在填入「其中」 &「限價」(與蒙戈作品)

Model 
    .findOne({name:''}) 
    .populate('project',{ 
     {where: {field1: true}}, 
     {select: ['field1','field2']}, 
     limit: 3 
    }) 
    .exec(
     function(error,result){} 
    ) 

當然,你可以填入一些協會

Model 
    .findOne({name:''}) 
    .populate('project') 
    .populate('owner') 
    .populate('othermodel') 
    .exec(
     function(error,result){} 
    ) 
相關問題