Ich mag die Validierung, die mit Mongoose kommt. Wir versuchen herauszufinden, ob wir es verwenden und den Overhead in Kauf nehmen wollen. Wer weiß, ob beim Erstellen eines Mungoschemas ein Verweis auf die übergeordnete Sammlung angegeben wird (im untergeordneten Schema geben Sie die Objekt-ID des übergeordneten Objekts als Feld an), bedeutet dies dann, dass Sie jedes Mal versuchen, das Dokument zu speichern Überprüft die übergeordnete Sammlung auf das Vorhandensein der referenced Objekt-ID?Validiert Mongoose tatsächlich das Vorhandensein einer Objekt-ID?
Antwort
Ich tue es mit Middleware, eine Suche des Elements auf die Validierung durchführen:
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');
Nein, ein ObjectId
-Feld, das in Ihrem Schema als Verweis auf eine andere Sammlung definiert ist, wird in der referenzierten Sammlung bei einem Speichervorgang nicht als vorhanden markiert. Sie können es bei Bedarf in der Midgoware von Mongoose machen.
ich mongoose-id-validator bin mit. Funktioniert gut
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);
Ich mag das. Schön und einfach. – CargoMeister
Sie können versuchen, https://www.npmjs.com/package/lackey-mongoose-ref-validator (Ich bin der Entwickler)
Es verhindert auch, Löschung, wenn die Referenz auf ein anderes Dokument verwendet wird.
var mongooseRefValidator = require('lackey-mongoose-ref-validator');
mongoSchema.plugin(mongooseRefValidator, {
onDeleteRestrict: ['tags']
});
Es ist eine frühe Version, so dass einige Fehler erwartet werden. Füllen Sie einfach ein Ticket aus, wenn Sie eines finden.
- 1. Auf das Vorhandensein einer Unterliste prüfen
- 2. Funktioniert das OptionalFieldAttribute tatsächlich?
- 3. Sperre für das Vorhandensein einer Datei in Java
- 4. Wie kann ich das Vorhandensein einer Eigenschaftendatei im Klassenpfad verspotten?
- 5. Hinzufügen einer Integritätsbedingung, die das Vorhandensein gespeicherter Prozeduren prüft
- 6. Wie ObjektID in String konvertiert werden
- 7. Mongoose sortiere das aggregierte Ergebnis
- 8. JGIT validiert, ob das Repository gültig ist
- 9. Wie wird das Software Design validiert?
- 10. erfordert das Vorhandensein von statischen Methoden in C#
- 11. Wann wird das savedInstanceState-Paket tatsächlich verwendet?
- 12. Wie überprüft man das Vorhandensein einer Tabelle von einer anderen SQL-Datenbank?
- 13. Zurückgegebene Spalte, die das Vorhandensein einer Zeile in einer anderen Tabelle anzeigt
- 14. Wie kann ich das Vorhandensein einer Variablen innerhalb der Umgebung einer Funktion testen?
- 15. Auswählen einer anderen Bedingung basierend auf dem Vorhandensein einer Assoziation?
- 16. So überprüfen Sie das Vorhandensein von Objekten in einem Array
- 17. Python HTML-Parsing, das tatsächlich funktioniert
- 18. Wie erkennt man das Vorhandensein eines Standard-Aufnahmegeräts im System?
- 19. Wie kann ich schnell auf das Vorhandensein eines Xservers testen
- 20. Überprüfung auf das Vorhandensein eines Schlüssels in request.args in Flask
- 21. Wie überprüfe ich das Vorhandensein eines Backone Callbacks?
- 22. PDI Wasserkocher - Wie ObjektId für Abfrage übereinstimmen in MongoDB Ausgabe
- 23. Kann ObjektId in Abfrage.ContainedIn Abfrage mit Parse nicht abrufen?
- 24. Validiert die Assoziation in der Kindklasse eines Modells.
- 25. NSIS Skript Bedingung Kompilierung basierend auf dem Vorhandensein einer Datei
- 26. Vorhandensein optionaler abgeleiteter Datentyp-Komponenten
- 27. Testen Sie, ob das Kind einer reaktiven Komponente tatsächlich das bereitgestellte Kind mit Scherz ist
- 28. Ist Mongoose async retten?
- 29. Was ist der richtige Weg, um das Vorhandensein einer Eigenschaft in einem JavaScript-Objekt zu testen?
- 30. Wie kann ich das Vorhandensein einer Datei mit Berechtigungen 000 testen?
Sinn macht. Wir gehen mit der Leistung fort, vorausgesetzt, wir codieren richtig und würden NICHT in eine Nicht-Existenz-Objekt-ID eingeben. Das hat natürlich sein eigenes Risiko, aber wir schreiben von Java in Node um, um mit dem Rest unserer Architektur übereinzustimmen und hoffentlich einige ernsthafte Leistungsprobleme zu lösen, die wir hatten. – CargoMeister