SyntaxError:await仅在nodeJs中的异步函数中有效

时间:2020-07-27 19:23:58

标签: node.js asynchronous async-await

我创建了以下函数,该函数调用第三方API以创建订单,并且在响应iam调用模型函数上,该函数检查具有用户ID的用户是否退出,并相应地执行了一些操作。 / p>

createOrder: async function (req, res, next) {
    
    let formData = req.body;

    razorPayInstance.instance.orders.create({
        amount: formData.amount * 100,
        currency: "INR", 
        payment_capture: 1       
    })
    .then(response => {
        let planSubscription = await PlanSubscription.findOne({ user_id:formData.user_id });
        if(planSubscription) {
            // do something
        } else {
         // do something
        }

        return res.status(200).json(res.fnSuccess(response));
    })
    .catch(error => {
        console.log(error);
    });
    
}

我在节点控制台中遇到以下错误: 让planSubscription =等待PlanSubscription.findOne({user_id:formData.user_id}); ^^^^^ SyntaxError:等待仅在异步功能中有效

有人可以指出这里有什么问题吗

1 个答案:

答案 0 :(得分:0)

您不能await内的某个函数中的某个表达式不是async。只需在async内使用then函数即可。有关await的更多信息,请点击此处

createOrder: async function (req, res, next) {
        
        let formData = req.body;
    
        razorPayInstance.instance.orders.create({
            amount: formData.amount * 100,
            currency: "INR", 
            payment_capture: 1       
        })
        .then(async(response) => { //change here
            let planSubscription = await PlanSubscription.findOne({ user_id:formData.user_id });
            if(planSubscription) {
                // do something
            } else {
             // do something
            }
    
            return res.status(200).json(res.fnSuccess(response));
        })
        .catch(error => {
            console.log(error);
        });
        
    }
相关问题