我有通过一对多关联链接的文章和评论(文章可以有很多评论)。
我想获得评论最多的文章,所以我继续这样做:
function mostCommentedArticles () {
var deferred = Q.defer();
Article.find().populate('comments').sort('comments ASC').exec(deferred.makeNodeResolver());
return deferred.promise;
}
但是,我没有获得预期的结果:它根本没有排序(通过评论或其他任何东西)
还有其他方法可以继续吗?或者这是一个问题吗?
谢谢,
皮尔
答案 0 :(得分:11)
你在.populate()
的第二个参数中传递它:
.populate('foo', { sort: 'comments ASC' }).exec(...)
答案 1 :(得分:3)
水线(0.10.22)或sailsjs(v0.11)目前都不支持此功能。 您需要处理返回变量以重新排序数据。
https://github.com/balderdashy/waterline/issues/334
有一张票之间存在差异
function mostCommentedArticles () {
var deferred = Q.defer();
Article.find().populate('comments').sort('comments.comment_date ASC').exec(deferred.makeNodeResolver());
return deferred.promise;
}
和
function mostCommentedArticles () {
var deferred = Q.defer();
Article.find().populate('comments', {sort: 'comment_date ASC'}).exec(deferred.makeNodeResolver());
return deferred.promise;
}
第一个应该返回所有文章和评论,其中包含由comment_date排序的所有内容。 第二个应该返回所有带有附加注释的文章,其中注释按日期排序。
第二个应该使用mongodb。
答案 2 :(得分:2)
This可能会指出正确的方向:
.populate('foo', { where: [ '1' ]);
您可以在where运算符here
上找到更多信息但请注意,您现在无法轻松过滤模型的原生字段和填充字段issue on hithub。