javascript – 如何在插入违反唯一索引的MongoDB文档时捕获错误?

我正在构建一个MEAN应用程序.

这是我的用户名架构,用户名应该是唯一的.

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

module.exports = mongoose.model('User', new Schema({ 
    username: { type: String, unique: true }
}));

在我的帖子路线上,我像这样保存用户:

app.post('/authenticate', function(req, res) {
        var user = new User({
            username: req.body.username
        });

        user.save(function(err) {
            if (err) throw err;

            res.json({
                success: true
            });

        });
    })

如果我再次使用相同的用户名发布,我会收到此错误:

MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key
error index:

有人可以解释如何而不是错误发送json像{succes:false,消息:’用户已经存在!’ }

注意:发布用户后,我会自动验证,不需要密码或其他内容.

解决方法:

您将需要测试从save方法返回的错误,以查看是否为重复的用户名抛出了该错误.

app.post('/authenticate', function(req, res) {
  var user = new User({
    username: req.body.username
  });

  user.save(function(err) {
    if (err) {
      if (err.name === 'MongoError' && err.code === 11000) {
        // Duplicate username
        return res.status(422).send({ succes: false, message: 'User already exist!' });
      }

      // Some other error
      return res.status(422).send(err);
    }

    res.json({
      success: true
    });

  });
})
上一篇:单源最短路径—Bellman-Ford和Dijkstra算法


下一篇:javascript – 将字符串数组转换为对象Id数组