Podoba mi się walidacja, która przychodzi z mangustą. Próbujemy ustalić, czy chcemy z niego korzystać, i znosić koszty ogólne. Czy ktokolwiek wie, czy udostępnia odwołanie do kolekcji nadrzędnej podczas tworzenia schematu mangusty (w schemacie podrzędnym, określ identyfikator obiektu obiektu nadrzędnego jako pole), oznacza to, że za każdym razem, gdy próbujesz zapisać dokument, sprawdza kolekcję nadrzędną pod kątem istnienia identyfikatora obiektu referencyjnego?Czy Mongoose rzeczywiście potwierdza istnienie identyfikatora obiektu?
Odpowiedz
Robię to z middleware, przeprowadzić wyszukiwanie elementu na walidacji:
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');
Nie, pole ObjectId
zdefiniowane w schemacie jako odniesienie do innej kolekcji nie jest zaznaczone jako istniejące w zbiorze odniesień do składowania. W razie potrzeby można to zrobić w oprogramowaniu Mongoose.
Używam mongoose-id-validator. Działa dobrze
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);
Podoba mi się to. Ładne i proste. – CargoMeister
Można spróbować https://www.npmjs.com/package/lackey-mongoose-ref-validator (jestem dewelopera)
Zapobiega to także usunięcie jeżeli odwołanie jest używany w innym dokumencie.
var mongooseRefValidator = require('lackey-mongoose-ref-validator');
mongoSchema.plugin(mongooseRefValidator, {
onDeleteRestrict: ['tags']
});
Jest to wczesna wersja, więc niektóre błędy są oczekiwane. Po prostu wypełnij zgłoszenie, jeśli je znajdziesz.
- 1. MongoDB: Unikalność identyfikatora obiektu
- 2. Jak przetestować istnienie obiektu w Firebird SQL?
- 3. Czy Java Kernel rzeczywiście istnieje?
- 4. Mongoose: sprawdź, czy obiekt jest obiektem mongoose
- 5. Przechowywanie obiektu Json w kluczu ciągu Mongoose
- 6. Mongoose: Wstawianie obiektu JS bezpośrednio do db
- 7. Mongoose - Pobieranie obiektu z ref zapytania
- 8. Zapisywanie obiektu Mongoose w dwóch kolekcjach
- 9. Tworzenie niestandardowego identyfikatora obiektu w MongoDB
- 10. Jak sprawdzić istnienie obiektu serwera sql i go usunąć?
- 11. Czy tablice JavaScript są rzeczywiście połączonymi listami?
- 12. Czy glm :: ortho() jest rzeczywiście błędne?
- 13. Kiedy właściwość JWTSecurityTokenHandler.ValidateToken() jest rzeczywiście poprawna?
- 14. Node.js - Mongoose - Sprawdź, czy istnieje zbiór
- 15. sprawdź istnienie nieruchomości
- 16. Jak sprawdzić istnienie DB?
- 17. Wykryto istnienie członka prywatnego
- 18. CompletableFuture.thenAccept może rzeczywiście blokować
- 19. Nie można uzyskać wirtualnych Mongoose jako części obiektu wynikowego
- 20. Sprawdź istnienie klucza YAML
- 21. Sprawdź istnienie HashMap kluczy
- 22. Jak usunąć dokument podrzędny wewnątrz obiektu za pomocą Mongoose
- 23. Dlaczego nie mogę usunąć właściwości obiektu modelu mongoose?
- 24. Jak uzyskać objectID po zapisaniu obiektu w Mongoose?
- 25. Mongoose: nie można zapisać zagnieżdżonego obiektu do zagnieżdżonego modelu
- 26. Kiedy pracownik selera potwierdza firmie RabbitMQ, że ma zadanie?
- 27. Mongoose findOneAndUpdate nie działa
- 28. Czy dane zwracane z Mongoose są niezmienne?
- 29. ADO.NET DataRow - sprawdź istnienie kolumny
- 30. iteracja plików, sprawdzanie linii istnienie
To ma sens. Przechodzimy z wydajnością, zakładając, że właściwie kodujemy i NIE wpisalibyśmy identyfikatora obiektu niebędącego. To oczywiście ma swoje własne ryzyko, ale przepisujemy java na węzeł, aby dopasować się do reszty naszej architektury, i mam nadzieję, że rozwiążemy poważne problemy z wydajnością, które mieliśmy. – CargoMeister