Sails.js水线查询通过关联

我正在开发和应用Sails.js并使用Waterline orm for db。 我正在开发function为用户做朋友请求和其他类似的请求。 我有以下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模型与某个Person有关联?

我尝试了这样的事情:

 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); }); }, 

所以我知道如何做“或”部分,但是如何检查这个人是否在人呢? 我知道我应该能够查看连接表,但是我不知道如何也找不到与我的情况有关的Waterline文档。 此外,我试图保持这个数据库不可知论者,虽然atm我使用MongoDB,但可能会后来使用Postgres。

我必须说实话,这是一个棘手的问题,而且,据我所知,你正在尝试做什么是不可能使用水线,所以你的select是写一个本地查询使用查询(),如果你正在使用基于SQL的适配器或本地,否则尝试做一些手动过滤。 手动过滤将取决于您处理的数据集有多大。

我的想法立即去修改你的数据模型,也许而不是你有一个表存储关联的集合。 像这样的东西:

 module.exports = { attributes: { owner: { model: 'URequest' }, person: { model: 'Person' } } 

使用sailsjs模型方法(如beforeCreate)可以根据需要自动创build这些关联。

祝你好运,我希望你得到它的工作!