Node.js路由和异步功能

时间:2018-06-03 02:09:37

标签: node.js asynchronous cloudinary

我在nodejs路由中遇到了cloudinary api的问题。下面是我的路线,然后是我得到的一般错误。我已经用Google搜索并阅读并询问,现在它的Stack Overflows已经转过来了。

目前正在运行节点10.3

 router.put("/snake/:id", upload.single('image'), function(req, res){
    Snake.findByIdAndUpdate(req.params.id, async function(err, updatedSnake){
        if (err){
            res.render("error");
        }else{
            if(req.file){
                try{
                await cloudinary.v2.uploader.destroy(updatedSnake.imageId);
                var result = await cloudinary.v2.uploader.upload(req.file.path);
         req.body.image = result.secure_url;
        req.body.imageId = result.public_id;                  

                } catch (err){
                    return res.redirect('error');
                }
            }
            updatedSnake.save();
        }
    });
});

和错误

Snake.findByIdAndUpdate(req.params.id, async function(err, updatedSnake)
                                       ^^^^^
SyntaxError: missing ) after argument list

1 个答案:

答案 0 :(得分:0)

是的,因为帕特里克先生说检查节点版本。你可以使用这样的简单结构(ES6)。

router.put('path', multer, async(req, res) =>{


     try() {

     await Snake.findByIdAndUpdate(req.params.i) 

  let updatedSnake =await Snake.findOne({id:req.params.id})
//do upload

    } 
     catch(err) {
//handle errors
     } 

 })