【问题标题】:How to handle error in mongoose in Node.js app如何在 Node.js 应用程序中处理猫鼬中的错误
【发布时间】:2018-05-20 21:22:39
【问题描述】:

我正在使用 express、mongoDb 和 mongoose 开发一个 node.js 应用程序。该应用程序将用户保存在下面的代码中没有问题,但在此代码中,即使过程成功,它总是控制台错误,并且用户被保存。

我正在尝试制作 Flash 消息和验证,但我无法继续解决这个问题。

另外,我不确定我是否在帖子中使用了正确的发布方法(我应该使用 res.status(500).send('error'))吗?

 newUser.save().then(function (error) {
  if (error) {
    console.log('error') // always prints this 
  } else {
    console.log('success')
  }
})

完整代码

var User = require('../models/User')
var router = require('express').Router()

 router.route('/user/signup')
.get(function (request, response) {
  // render the form
  response.render('user/signup')
 })
 .post(function (request, response) {
  var username = request.body.name
  var password = request.body.password
  var newUser = new User({
  name: username,
  password: password
  })
  newUser.save().then(function (error) {
    if (error) {
    console.log('error')
  } else {
    console.log('success')
  }
 })
 response.redirect('/')
 })

【问题讨论】:

    标签: javascript node.js mongodb express


    【解决方案1】:

    我想你想将函数直接传递给 save() 作为回调

    newUser.save(function (err, user) {
          if (err) ..
        })
    

    根据您目前采用的方法,我认为您会想要使用catch

    newUser.save().then(function (user) }})
       .catch((err) => ...);
    

    Source: mongoose docs

    【讨论】:

    • 是的。不使用 catch 有没有更好的方法?因为我想对 Flash 消息使用快速验证。
    • 我个人更喜欢使用 async/await: await newUser.save() 但我不确定是否有更好的方法 atm
    猜你喜欢
    • 2012-07-30
    • 2018-11-24
    • 2014-09-25
    • 2023-03-08
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 2020-07-18
    相关资源
    最近更新 更多