Javascript 未处理的承诺-express Node js
我已经使用express编写了一个简单的get调用,我正在尝试从mongoose获取一些数据。我的代码似乎存在一些问题,因为我在尝试此资源时遇到以下错误: (节点:92245)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志“---unhandled rejections=strict”(请参阅)。(拒绝id:1) (节点:92245)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止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)
//获取用户已注册的所有训练
路由器。获取(
“/用户注册的训练”,
需要授权,
异步函数(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中处理任何可能的拒绝承诺。