首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnhandledPromiseRejectionWarning: ValidationError:

UnhandledPromiseRejectionWarning: ValidationError:
EN

Stack Overflow用户
提问于 2022-10-31 12:19:59
回答 1查看 23关注 0票数 0

我是一个学生,我正在尝试创建一个预订api,如果登录的用户是一个允许添加课程的管理员,如果不允许管理员返回访问,我需要进行身份验证。

代码语言:javascript
复制
module.exports.addCourse = (reqBody) => {
    let newCourse = new Course({
        name : reqBody.name,
        description : reqBody.description,
        price : reqBody.price
    });
    
    return newCourse.save().then((course,error) => {

        if (!req.user.isAdmin) {

            return res.status(401).send({ message: "Access denied" });;

        } else if (reqBody.isAdmin = true){

            return true;

        };

    });

};


router.post("/",auth.verify,(req,res)=>{

    const data ={
        course: req.body,
        isAdmin: auth.decode(req.headers.authorization).isAdmin
    }
    courseController.addCourse(data).then(resultFromController=>res.send(resultFromController));
});

module.exports = router;

如果用户是管理员,并且不允许(如果不是管理员),则我希望在我的数据库中添加这个过程,我总是得到错误:

(节点:17308) UnhandledPromiseRejectionWarning: ValidationError:课程验证失败:名称:课程是必需的,描述:描述是必需的,价格:价格是必需的

尽管我已经给出了名字,描述和价格,并在邮递员中添加了标记。

EN

回答 1

Stack Overflow用户

发布于 2022-10-31 12:38:26

你为什么要使用回调和承诺?你的语法不对..。

// ALTER1

代码语言:javascript
复制
module.exports.addCourse = (reqBody) => {
  const newCourse = new Course({
    name : reqBody.name,
    description : reqBody.description,
    price : reqBody.price
  });

  return newCourse.save()
    .then((course) => {
     // ...code
    }).catch((err) => {
      // code error
    })
}

router.post("/",auth.verify,(req,res)=>{

  const data ={
      course: req.body,
      isAdmin: auth.decode(req.headers.authorization).isAdmin
  }
  courseController.addCourse(data).then(resultFromController=>res.send(resultFromController));
});

module.exports = router;

// ALTER2

代码语言:javascript
复制
module.exports.addCourse = async (reqBody) => {
  const newCourse = new Course({
    name : reqBody.name,
    description : reqBody.description,
    price : reqBody.price
  });

  return await newCourse.save()
}

router.post("/",auth.verify, async (req,res)=>{

  const data ={
      course: req.body,
      isAdmin: auth.decode(req.headers.authorization).isAdmin
  }

  try {
    const response = await courseController.addCourse(data)
    // response
  } catch (err) {
    // error response
  }
});

module.exports = router;

// ALTER3

代码语言:javascript
复制
module.exports.addCourse = (reqBody) => {
  const newCourse = new Course({
    name : reqBody.name,
    description : reqBody.description,
    price : reqBody.price
  });

  return new Promise((resolve, reject) => {
    newCourse.save()
      .then((course) => {
        resolve(course)
      }).catch((err) => {
        reject(err)
      })
  })
}

router.post("/",auth.verify,(req,res)=>{

  const data ={
      course: req.body,
      isAdmin: auth.decode(req.headers.authorization).isAdmin
  }

  return new Promise((resolve, reject) => {
    courseController.addCourse(data)
      .then((resultFromController) => {
        resolve(res.send(resultFromController))
      }).catch((error) => { 
        reject(res.send('error'))
      })

  })
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74263181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档