如何使用 expressjs 一次 运行 多个猫鼬查询并生成 json respnose

How to run multiple mongoose queries at once and generate json respnose using expressjs

在这段代码中,我试图从两个不同的文档中获取对象计数,并发送一个 json 响应,其中包含两个查询的结果。但不幸的是,此代码段的响应始终为 -1,它不会随查询结果更新。

  router.get('/stats', function (req, res, next) {
  let cateCount = -1;
  let userCount = -1;
    Category.find({}).then(function(item){
    cateCount = item.length;
    });
    Register.find({}).then(function(item){
      userCount = item.length;
    });

  res.json({
    "categories": 
      cateCount,
    "users":
    userCount
  });

回复:

{"categories":-1,"users":-1}

计算文档使用:https://mongoosejs.com/docs/api/model.html#model_Model.count

async-await这样:

 router.get('/stats',async function (req, res, next) {
  let cateCount = -1;
  let userCount = -1;
    cateCount = await Category.count({});
    userCount = await Register.count({});
    res.json({
      categories:cateCount,
      users:userCount
   });
});

您可以链接调用,在返回响应之前等待回调。 这是一种可能的解决方案:

router.get('/stats', function (req, res, next) {
  let cateCount = -1;
  let userCount = -1;
    Category.find({}).then(function(item){
    cateCount = item.length;
        Register.find({}).then(function(item){
             userCount = item.length;
             res.json({
                "categories": cateCount,
                "users": userCount });
        });
  });