微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 如何在一个get请求中返回多个Mongoose集合?

我正在尝试生成一个响应,该响应返回按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集合.

如果我想返回另外两个按名称和大小属性排序的集合,我可以做什么?所有这些都在同一个请求中?

解决方法

克里特岛一个对象来封装信息并链接你的查找查询,如:

var findRoute = router.route("/find");
var json = {};

findRoute.get(function(req,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");
});

只需确保进行适当的错误检查.

这有点像uggly,使你的代码难以阅读.尝试使用像async或甚至承诺这样的模块来适应这种逻辑(Qbluebird就是很好的例子).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐