从关系

时间:2015-05-09 13:10:09

标签: node.js waterline

我正在使用水线在node.js(sails)上构建一个webapp(使用mysql适配器)。

我设法让关系像这样工作:

//Post.js attributes
    post_statistics: {
        collection: 'postStatistics',
        via: 'post'
    }

我可以轻松地找到关系记录:

var query = {user:userId}; // Just filtering by the user
query.is_public = Post.POSTS_ONLY_ACTIVE; // Only showing active posts, boolean
query.select = ['id','title','content']; // id is only needed for me to get the join working
Post.find(query).populate('post_statistics').exec(cb);

一切正常但我只需要从post_statistics中选择特定字段。 但是,这似乎没有做任何事情,我希望它能够发挥作用:

Post.find(query).populate('post_statistics',{select:['post','user','id']}).exec(cb);

将字段名称添加到初始选择中会更糟糕,因为字段已经定位到帖子表。

任何理智的方式使这项工作或我将不得不编写整个查询?

1 个答案:

答案 0 :(得分:2)

目前水线不支持.populate({ assoc, select: [] })https://github.com/balderdashy/waterline/issues/919中有更多详情。

一种可能的替代方法是通过.query()docs)运行SQL查询。

另一种方法是向waterline提交补丁,添加对.populate({ assoc, select: [] })的支持。