sails js mongodb populate

时间:2017-01-25 13:09:56

标签: javascript node.js mongodb sails.js sails-mongo

我想将.populate()与Sails js和MongoDB一起使用,所以我做了类似的事情:

我使用的是最新版本的Sails和MongoDB以及Node。

我的模特看起来像:

// User.js
module.exports = {
  attributes: {
    name: {
      type: 'string'
    },
    pets: {
      collection: 'pet',
      via: 'owner'
    }
  }
};


// Pet.js
module.exports = {
  attributes: {
    name: {
      type: 'string'
    },

    owner: {
      model: 'user'
    }
  }
};

我使用了以下与文档相同的内容:

User.find()
.populate('pets')
.exec(function(err, users) {
  if(err) return res.serverError(err);
  res.json(users);
});

但我得到以下输出:

[
  {
    "pets": [],
    "id": "58889ce5959841098d186b5a",
    "firstName": "Foo",
    "lastName": "Bar"
  }
]

1 个答案:

答案 0 :(得分:2)

如果您只需要查询狗。您可以轻松地反转查询。

Pet.find() //or what you want with {}
 .populate('users')
 .exec(err, petsWithUsers)

但如果没有:

User.find()
      .populate('pets')
      .exec(err, users) ...

这将返回所有用户(User.find())并仅填充dog(populate('pets', {type: 'dog'}))类型的宠物。如果您的结果中没有狗的用户。

更多信息和参考:here