我正在开发和使用Sails.js并使用Waterline orm for db。我正在为用户开发功能,以便彼此进行朋友请求和其他类似请求。我有以下URequest模型:
module.exports = {
attributes: {
owner: {
model: 'Person'
},
people: {
collection: 'Person'
},
answers: {
collection: 'URequestAnswer'
},
action: {
type: 'json' //TODO: Consider alternative more schema consistent approach.
}
}
};
基本上,所有者是与提出请求的人员的关联,而人员是与请求所针对的所有人员的一对多关联。到目前为止还不错。
现在我想拥有一个控制器,它返回涉及某个用户的所有请求,意味着用户在所有者字段或人员中的所有请求。我如何查询"给我所有与人P" ?换句话说,我怎么知道哪些URequest模型与某个人有关联?
我试过这样的事情:
getRequests: function (req, res) {
var personId = req.param('personId');
URequest.find().where({
or: [
{people: [personId]}, //TODO: This is not correct
{owner: personId}
]
}).populateAll().then(function(results) {
res.json(results);
});
},
所以我知道如何做"或"部分但我如何检查personId是否在人群中?我知道我应该能够以某种方式查看联合表,但我不知道怎样也无法从与我的情况相关的Waterline文档中找到更多。此外,我试图保持这种数据库不可知,但我现在使用的是MongoDB,但稍后可能会使用Postgres。