mongoose-unique-validator
Cách sử dụng plugin này:
1) npm install - lưu mongoose-unique-validator
2) trong lược đồ của bạn, hãy làm theo hướng dẫn sau:
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
exampleSchema.plugin(uniqueValidator);
3) phương pháp mongoose
Khi sử dụng các phương thức như vậy, findOneAndUpdate
bạn sẽ cần chuyển đối tượng cấu hình này:
{ runValidators: true, context: 'query' }
ie. User.findOneAndUpdate(
{ email: 'old-email@example.com' },
{ email: 'new-email@example.com' },
{ runValidators: true, context: 'query' },
function(err) {
}
4) các tùy chọn bổ sung
trường hợp không nhạy cảm
sử dụng tùy chọn uniqueCaseInsensitive trong giản đồ của bạn
ie. email: { type: String, index: true, unique: true, required: true, uniqueCaseInsensitive: true }
thông báo lỗi tùy chỉnh
ie. exampleSchema.plugin(uniqueValidator, { message: 'Error, expected {PATH} to be unique.' });
Giờ đây, bạn có thể thêm / xóa thuộc tính duy nhất vào các lược đồ của mình mà không cần lo lắng về việc khởi động lại mongo, bỏ cơ sở dữ liệu hoặc tạo chỉ mục.
Lưu ý (từ tài liệu):
Vì chúng tôi dựa vào các hoạt động không đồng bộ để xác minh xem một tài liệu có tồn tại trong cơ sở dữ liệu hay không, nên hai truy vấn có thể thực thi cùng một lúc, cả hai đều lấy lại 0 và sau đó cả hai đều chèn vào MongoDB.
Ngoài việc tự động khóa bộ sưu tập hoặc buộc một kết nối duy nhất, không có giải pháp thực sự nào.
Đối với hầu hết người dùng của chúng tôi, đây không phải là vấn đề, nhưng là một trường hợp nguy hiểm cần lưu ý.