我正在尝试生成一个响应,该响应返回按3个不同列排序的相同集合。这是我目前的代码:
var findRoute = router.route("/find")
findRoute.get(function(req, res) {
Box.find(function(err, boxes) {
res.json(boxes)
}).sort("-itemCount");
});
正如您所看到的,我们正在制作一个get请求,查询Boxes,然后在最后按itemCount
对它们进行排序。这对我不起作用,因为请求只返回按itemCount
排序的单个JSON集合。
如果我想在同一个请求中返回另外两个按name
和size
属性排序的集合,我该怎么办?
答案 0 :(得分:4)
Crete一个对象来封装信息并链接您的find
查询,例如:
var findRoute = router.route("/find");
var json = {};
findRoute.get(function(req, res) {
Box.find(function(err, boxes) {
json.boxes = boxes;
Collection2.find(function (error, coll2) {
json.coll2 = coll2;
Collection3.find(function (error, coll3) {
json.coll3 = coll3;
res.json(json);
}).sort("-size");
}).sort("-name");
}).sort("-itemCount");
});
请确保执行相应的错误检查。
答案 1 :(得分:3)
答案 2 :(得分:0)
你试过吗?
Box.find().sort("-itemCount").exec(function(err, boxes) {
res.json(boxes)
});
还可以根据您可以使用的2个或更多字段对结果进行排序:
.sort({name:1,size:-1})
如果有帮助,请告诉我。