我如何在异步/等待中的另一个诺言中写一个诺言

问题描述 投票:0回答:1

我对Node.js相当陌生,我正在尝试为async / await中的“获取所有用户”页面建立分页功能。但是我似乎遇到了障碍,并且经过广泛的研究(在这里,其他资料甚至是教程),我仍然无法提出解决方案。我所见过的所有解决方案都向我展示了两种方法。这是代码:

mongoOp.countDocuments({},function(err,totalCount) {
  if(err) {
    response = {"error" : true,"message" : "Error fetching data"}
  }
  mongoOp.find({},{},query,function(err,data) {
      // Mongo command to fetch all data from collection.
    if(err) {
        response = {"error" : true,"message" : "Error fetching data"};
    } else {
        var totalPages = Math.ceil(totalCount / size)
        response = {"error" : false,"message" : data,"pages": totalPages};
    }
    res.json(response);
  });
});

我已经弄清楚了如何在异步/等待中同时写入countDocuments()和find()函数,以产生结果,如下所示发送正确的json响应:

countDocuments()函数

 try {
    totalDocs = await mongoOp.countDocuments();
    return res.status(200).json({totalDocs})
  } catch (err) {
    return res.send(err)
  }
};

find()查询:

try {
    const users = await mongoOp.find({}, {}, query);
    return res.status(200).json({
      status: users
   });
  } catch (error) {
    return res.status(400).send(error);
  }

但是,我不知道如何将它们组合在一起以产生所需的结果。如果能得到我的帮助,我将不胜感激。

javascript node.js async-await
1个回答
0
投票

您似乎正在寻找

try {
    const totalCount = await mongoOp.countDocuments();
    const totalPages = Math.ceil(totalCount / size)
    const data = await mongoOp.find({}, {}, query);
    return res.status(200).json({"error":false, "message":data, "pages":totalPages});
} catch (err) {
    return res.status(500).json({"error":true, "message":"Error fetching data"});
}
© www.soinside.com 2019 - 2024. All rights reserved.