Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未处理的承诺-express Node js_Javascript_Node.js_Express_Dom Events - Fatal编程技术网

Javascript 未处理的承诺-express Node js

Javascript 未处理的承诺-express Node js,javascript,node.js,express,dom-events,Javascript,Node.js,Express,Dom Events,我已经使用express编写了一个简单的get调用,我正在尝试从mongoose获取一些数据。我的代码似乎存在一些问题,因为我在尝试此资源时遇到以下错误: (节点:92245)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅)。(拒绝id:1) (节点:92245)

我已经使用express编写了一个简单的get调用,我正在尝试从mongoose获取一些数据。我的代码似乎存在一些问题,因为我在尝试此资源时遇到以下错误:

(节点:92245)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅)。(拒绝id:1) (节点:92245)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程

//获取用户已注册的所有训练
路由器。获取(
“/用户注册的训练”,
需要授权,
异步函数(req、res、next){
让付款=等待付款。查找({
参与者SUSERID:req.payload.id,
退款:“否”,
});
让结果=[];
for(设i=0;i
谁能给我解释一下我的代码块出了什么问题吗?

你需要试一试

//Get all workouts user has registered for
router.get(
  "/user-registered-workouts",
  auth.required,
  async function (req, res, next) {
    try {
      let payments = await Payment.find({
        participantsUserId: req.payload.id,
        refund: "no",
      });

      let result = [];
      for (let i = 0; i < payments.length; i++) {
        try {
          let workoutDoc = await Workout.findById(
            payments[i].workoutId
          ).populate("paymentInfo", "_id status refund participantsUserId");
          let workout = workoutDoc.toObject();

          let trainerProfile = await Profile.findOne({
            userId: workout.TrainersUserId,
          });

          if (!trainerProfile) {
            return res.sendStatus(401);
          }

          trainerProfile = trainerProfile.toProfileJSONFor();
          workout.trainerDetails = trainerProfile;
          workout.paymentUniqueId = payments[i].id;
          result.push(workout);
        } catch (err) {
          res.status(400).send({ message: err });
        }
      }
      res.json({ workouts: result });
    } catch (err) {
      res.status(400).send({ message: err });
    }
  }
);
//获取用户已注册的所有训练
路由器。获取(
“/用户注册的训练”,
需要授权,
异步函数(req、res、next){
试一试{
让付款=等待付款。查找({
参与者SUSERID:req.payload.id,
退款:“否”,
});
让结果=[];
for(设i=0;i
像这样的东西

你需要试一试

//Get all workouts user has registered for
router.get(
  "/user-registered-workouts",
  auth.required,
  async function (req, res, next) {
    try {
      let payments = await Payment.find({
        participantsUserId: req.payload.id,
        refund: "no",
      });

      let result = [];
      for (let i = 0; i < payments.length; i++) {
        try {
          let workoutDoc = await Workout.findById(
            payments[i].workoutId
          ).populate("paymentInfo", "_id status refund participantsUserId");
          let workout = workoutDoc.toObject();

          let trainerProfile = await Profile.findOne({
            userId: workout.TrainersUserId,
          });

          if (!trainerProfile) {
            return res.sendStatus(401);
          }

          trainerProfile = trainerProfile.toProfileJSONFor();
          workout.trainerDetails = trainerProfile;
          workout.paymentUniqueId = payments[i].id;
          result.push(workout);
        } catch (err) {
          res.status(400).send({ message: err });
        }
      }
      res.json({ workouts: result });
    } catch (err) {
      res.status(400).send({ message: err });
    }
  }
);
//获取用户已注册的所有训练
路由器。获取(
“/用户注册的训练”,
需要授权,
异步函数(req、res、next){
试一试{
让付款=等待付款。查找({
参与者SUSERID:req.payload.id,
退款:“否”,
});
让结果=[];
for(设i=0;i

类似这样的内容

try
/
catch
块中包装您的
wait
。在catch块中处理承诺拒绝。需要明确的是,代码的“问题”在于缺少错误处理。对于任何拒绝的
wait
,您根本没有错误处理。有多种方法可以解决这个问题。您必须在nodejs中处理任何可能的拒绝承诺。将您的
wait
包装在
try
/
catch
块中。在catch块中处理承诺拒绝。需要明确的是,代码的“问题”在于缺少错误处理。对于任何拒绝的
wait
,您根本没有错误处理。有多种方法可以解决这个问题。您必须在nodejs中处理任何可能的拒绝承诺。