我偶然发现我的搜索结果是混合数据的问题,该数据位于不同的集合(帖子/场所/等),目前我正在执行单独的请求以检索此数据,但它显然在其类型中排序(帖子阵列,场地阵列) 如何查询多个集合(帖子/场所)并按日期/任何其他参数(通过mongoose)对它们进行排序? 或者可能有更好的解决方案? 感谢
答案 0 :(得分:0)
我相信Mongoose不可能,你可以同时做这样的事情:
var async = require('async');
function getPosts(cb) {
Post.find({"foo": "bar"}, function(err, posts) {
cb(err, posts);
})
}
function getVenues(cb) {
Venue.find({"foo": "bar"}, function(err, venues) {
cb(err, venues);
})
}
async.parallel([getPosts, getVenues], function(err, results) {
if(err) {
next(err);
}
res.send(results.sort(function(a, b) {
//if default sorting is not enough you can change it here
return a.date < b.date ? -1 : a.date > b.date ? 1 : 0;
}));
});
此代码假设您位于快速路线内且Posts
和Venues
都具有共同属性; date
。如果您以不同方式命名这些日期属性,则必须改进排序算法。