Tôi đang xây dựng một ứng dụng MEAN.Cách nắm bắt lỗi khi chèn tài liệu MongoDB vi phạm một chỉ mục duy nhất?
Đây là lược đồ tên người dùng của tôi, tên người dùng phải là duy nhất.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
module.exports = mongoose.model('User', new Schema({
username: { type: String, unique: true }
}));
Trên tuyến bài của tôi, tôi tiết kiệm cho người sử dụng như thế này:
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
});
});
})
Nếu tôi đăng với tên người dùng cùng một lần nữa tôi nhận được lỗi này:
MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index:
Ai đó có thể giải thích như thế nào thay vì lỗi để gửi một json như { succes: false, message: 'User already exist!' }
Lưu ý: Sau khi tôi đăng người dùng, tôi sẽ tự động tự xác thực, không cần mật khẩu hay cái gì khác.
Cảm ơn, hoạt động ngoại trừ, tôi đã nghĩ về điều này nhưng tôi nghĩ rằng lỗi có thể trả lại lỗi khác với lỗi người dùng hiện tại, tôi sai? – Hiero
Có, nhưng đây là trường hợp phổ biến: "cố gắng lưu người dùng" và nếu có lỗi, bạn cho rằng người dùng trùng lặp. Bạn có thể hiển thị cho người dùng một thông điệp đơn giản như "người dùng đã tồn tại" và sau đó lưu trữ trên nhật ký của bạn có lỗi thực sự để xem có sai sót với cơ sở dữ liệu hay không. –