Как обработать ошибку в mongoose в приложении Node.js

1

Я разрабатываю приложение node.js с помощью express и mongoDb и mongoose. Приложение сохраняет пользователя в коде ниже, без проблем, но в этом коде он всегда вызывает ошибку, даже если процесс является успешным, и пользователь сохраняется.

Я пытаюсь сделать флеш-сообщения и проверки, но я не могу решить эту проблему.

Кроме того, я не уверен, использую ли я правильный метод сообщения или нет (должен ли я использовать 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('/')
 })
Теги:
express

1 ответ

1
Лучший ответ

Я думаю, вы хотите передать функцию непосредственно для сохранения() в качестве обратного вызова

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

С помощью подхода, который вы сейчас используете, я думаю, вы захотите использовать catch

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

Источник: mongoose docs

  • 0
    Правда. Есть ли лучший подход без использования catch? Потому что я хочу использовать экспресс-проверку с флеш-сообщениями.
  • 0
    Лично я предпочитаю использовать async / await: await newUser.save (), но я не уверен, есть ли лучший способ для

Ещё вопросы

Сообщество Overcoder
Наверх
Меню