Điều này xảy ra vì bạn đang lưu tài liệu trùng lặp trước mongoose
đã hoàn thành việc tạo chỉ mục. Mongoose tạo các chỉ mục khi đang di chuyển, sau khi ứng dụng của bạn đã khởi động.
Vì vậy, để đảm bảo rằng tài liệu của bạn sẽ chỉ được lưu sau khi các chỉ mục được tạo, bạn phải lắng nghe index
sự kiện của mô hình của bạn. Ví dụ:
Model.on('index', function (error) {
console.log(jp);
jp.save(function(err){
console.log(err);
var jp2 = new Model({ phone: "123456"});
console.log(jp2);
jp2.save(function(err){
console.log(err);
process.exit();
});
})
});
Bây giờ, khi bạn cố gắng lưu tài liệu thứ hai (tài liệu được sao chép), MongoDB của bạn sẽ xuất hiện lỗi do save
của bạn lệnh gọi sẽ chỉ chạy sau khi các chỉ mục được tạo.