Tôi thích xác thực đi kèm với Mongoose. Chúng tôi đang cố gắng tìm hiểu xem liệu chúng tôi có muốn sử dụng nó hay không và đưa ra chi phí. Có ai biết nếu cung cấp tham chiếu đến bộ sưu tập cha mẹ khi tạo lược đồ mongoose, (trong lược đồ con, chỉ định id đối tượng của đối tượng cha làm trường), thì điều này có nghĩa là mỗi lần bạn cố gắng lưu tài liệu kiểm tra các bộ sưu tập cha mẹ cho sự tồn tại của id đối tượng refereneced?Mongoose có thực sự xác nhận tính tồn tại của một Id đối tượng không?
Trả lời
tôi đang làm nó với middleware, thực hiện tìm kiếm của nguyên tố này vào xác nhận:
ExampleSchema = new mongoose.Schema({
parentId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Example'
}
});
ExampleModel = mongoose.model('Example', ExampleSchema);
ExampleSchema.path('parentId').validate(function (value, respond) {
ExampleModel.findOne({_id: value}, function (err, doc) {
if (err || !doc) {
respond(false);
} else {
respond(true);
}
});
}, 'Example non existent');
Không, trường ObjectId
được xác định trong giản đồ của bạn dưới dạng tham chiếu đến bộ sưu tập khác không được chọn là hiện có trong bộ sưu tập được tham chiếu khi lưu. Bạn có thể làm điều đó trong middleware Mongoose, nếu cần thiết.
Tôi đang sử dụng mongoose-id-validator. Làm việc tốt
var mongoose = require('mongoose');
var idValidator = require('mongoose-id-validator');
var ReferencedModel = new mongoose.Schema({name: String});
var MySchema = new mongoose.Schema({
referencedObj : { type: mongoose.Schema.Types.ObjectId, ref: 'ReferencedModel'},
referencedObjArray: [{ type: mongoose.Schema.Types.ObjectId, ref: 'ReferencedModel' }]
});
MySchema.plugin(idValidator);
Tôi thích điều đó. Đẹp và đơn giản. – CargoMeister
Bạn có thể thử https://www.npmjs.com/package/lackey-mongoose-ref-validator (Tôi đang phát triển)
Nó cũng ngăn chặn xóa nếu tham chiếu được sử dụng trên tài liệu khác.
var mongooseRefValidator = require('lackey-mongoose-ref-validator');
mongoSchema.plugin(mongooseRefValidator, {
onDeleteRestrict: ['tags']
});
Đây là phiên bản đầu tiên, do đó một số lỗi được mong đợi. Chỉ cần điền vào một vé nếu bạn tìm thấy bất kỳ.
- 1. Symfony2: lấy id của đối tượng đã tồn tại
- 2. Cách chính xác để kiểm tra sự tồn tại của một thuộc tính trên một đối tượng JavaScript là gì?
- 3. Làm cách nào để xác thực xem cột có tồn tại trong đối tượng DataRow không?
- 4. Kiểm soát sự tồn tại của một thuộc tính
- 5. Nhận đối tượng theo id()?
- 6. Tại sao thuộc tính đối tượng này không xác định?
- 7. Python - Tồn tại một hàm được gọi khi một đối tượng không thực hiện một hàm?
- 8. Mongoose: kiểm tra xem đối tượng có phải là đối tượng mongoose
- 9. Kiểm tra xem một đối tượng có tồn tại
- 10. Không thể nhận giá trị của thuộc tính ____: đối tượng là null hoặc không xác định
- 11. Làm thế nào để tồn tại một đối tượng với nhiều đối tượng liên quan
- 12. Đường ray: Xác thực sự tồn tại của một liên kết
- 13. Xác nhận hợp lệ nhiều thuộc tính lược đồ Mongoose?
- 14. Restangular - Nhận đối tượng w/id, chỉnh sửa đối tượng, cập nhật đối tượng
- 15. Xác thực đối tượng PHP
- 16. kiểm tra sự tồn tại của thuộc tính
- 17. Fluent NHibernate nhận Id của đối tượng đã lưu
- 18. Kiểm tra xem thành viên đối tượng có tồn tại trong đối tượng lồng nhau
- 19. SQLAlchemy than phiền rằng chính nước ngoài không tồn tại nhưng thực sự nó tồn tại
- 20. Tên đối tượng HSQLDB đã tồn tại
- 21. django: select_related() trên một đối tượng đã tồn tại?
- 22. đối tượng 'RelatedManager' không có thuộc tính
- 23. Làm cách nào để xử lý xác thực đối tượng miền trước khi nó tiếp tục tồn tại?
- 24. Mongoose - xác thực cú pháp email
- 25. làm thế nào để có được ngày tạo từ id đối tượng trong mongoose?
- 26. Không thể đính kèm một thực thể tách rời: "Một đối tượng có cùng khóa đã tồn tại trong ObjectStateManager"
- 27. JPA được id của đối tượng thực thể
- 28. Trong python, có một setdefault() tương đương để nhận các thuộc tính đối tượng không?
- 29. backbone.js không cập nhật id của đối tượng mô hình sau khi lưu, tại sao không?
- 30. Kiểm tra xem một đối tượng tồn tại trong VBScript
Làm cho tinh thần. Chúng tôi đang đi với hiệu suất, giả sử chúng tôi đang mã hóa đúng và sẽ không nhập vào một id đối tượng không tồn tại. Điều đó tất nhiên có rủi ro riêng của nó, nhưng chúng tôi đang viết lại từ java vào nút để khớp với phần còn lại của kiến trúc của chúng tôi, và hy vọng giải quyết một số vấn đề hiệu suất nghiêm trọng mà chúng tôi gặp phải. – CargoMeister