如何过滤 sails.js 中填充的值?

How can I filter populated values in sails.js?

我有模型User。为了简化我的问题,它没有属性(除了由 sails 引擎生成的 id):

module.exports = {

}

我也有模特UserPost:

module.exports = {
    attributes: {
        user: {
            required: true,
            model: 'user'
        }
    }
}

我想查找 ID 等于 42 的用户的帖子。我在数据库中有该记录,包括 ID 为 42 的用户及其帖子。

这行不通:

UserPost.find().populate('user', {
    id: 42
}).exec(function(err, posts) {
    res.json(posts);
});

当然,在这种情况下,我可以将查询条件传递给find()。无论如何,总的来说,我应该不仅可以通过 id 找到其他属性。

我该怎么做?

其实问题是我对人口标准的理解有误。解决方案是

  • UserUserPost 模型创建一对多关联

  • 找到用户并将其填充到他的post。类似于:

User.findOne({
    id: 42
}).populate('userPosts').exec(function(err, user) {
    res.json(user.userPosts);
});

这个效果很好。