我正在构建一个MEAN应用程序。如何在插入违反唯一索引的MongoDB文档时捕获错误?
这是我的用户名模式,用户名应该是唯一的。
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:
有人能解释一下,而不是的错误发送类似{ succes: false, message: 'User already exist!' }
注意:我发布用户后,我会aut omatically认证,不需要密码或其他东西。
感谢,作品为例外,我在想这一点,但我认为错误可以返回的东西比现有用户的错误一样,我错了吗? – Hiero
是的,但这是常见的情况:“尝试保存用户”,如果出现错误,您认为用户重复。您可以向用户显示一条简单的消息,如“用户已存在”,然后在日志中存储真正的错误,以查看数据库是否存在错误。 –