有没有一种标准的方法来扩展与Sails,Mongo和Waterline的关联与.findOne()?

时间:2016-03-31 15:40:00

标签: sails.js waterline sails-mongo

我的模型包含与其他模型的关联,这些模型显然只与ObjectId一起存储。我想知道的是,是否有办法传递选项以扩展所有关联或一组特定的关联。

所以'项目模型'看起来像这样(例子):

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

当你这样做时:

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

它会自动展开'项目中包含的所有关联。'但是,如果您传入此选项,则不会展开:

memcpy(start_mem, &meta, sizeof meta);

我想知道为什么要保存'会自动扩展,我很好奇是否有办法找到一个'也自动扩展。我知道你不想总是扩展,因为它可能很难记忆,但这对于在特定时间返回完全展开的对象非常有用。

1 个答案:

答案 0 :(得分:0)

您想填充所有相关模型吗?

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

它将填充所有协会。如果您只想填充一个,可以使用

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

更多。你可以使用'select','where'和amp;在populate中使用'limit'(与Mongo一起使用)

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){}
    )