Mi piace la convalida fornita con Mongoose. Stiamo cercando di capire se vogliamo usarlo e sopportare il sovraccarico. Qualcuno sa se fornisce un riferimento alla collezione genitore quando crea uno schema di mangusta, (nello schema figlio, specifica l'id oggetto dell'oggetto padre come un campo), questo significa che ogni volta che provi a salvare il documento esso controlla la raccolta genitore per l'esistenza dell'id oggetto refereneced?La Mongoose convalida effettivamente l'esistenza di un ID oggetto?
risposta
lo sto facendo con middleware, eseguire una ricerca dell'elemento sulla validazione:
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');
No, un campo ObjectId
definito nello schema come riferimento a un'altra raccolta non viene verificato come esistente nella raccolta di riferimento su un salvataggio. Potresti farlo nel middleware Mongoose, se necessario.
sto usando mongoose-id-validator. Funziona bene
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);
Mi piace. Bello e semplice – CargoMeister
Si può provare https://www.npmjs.com/package/lackey-mongoose-ref-validator (io sono lo sviluppatore)
Inoltre, impedisce l'eliminazione se si usa il riferimento su un altro documento.
var mongooseRefValidator = require('lackey-mongoose-ref-validator');
mongoSchema.plugin(mongooseRefValidator, {
onDeleteRestrict: ['tags']
});
Si tratta di una prima versione, per cui sono attesi alcuni bug. Basta compilare un biglietto se ne trovi uno.
- 1. Convalida di un ID Salesforce
- 2. Convalida di più proprietà dello schema Mongoose?
- 3. Mongoose convalida unico tipo di errore
- 4. Oggetto effettivamente immutabile
- 5. Mongoose convalida dello schema asincrona non funziona
- 6. Mongoose: è richiesto il percorso di errore di convalida
- 7. Mongoose avanzato schema personalizzato tipo di oggetto
- 8. Salvataggio di un oggetto Mongoose in due raccolte
- 9. Mongoose - Recupero oggetto dalla domanda rif
- 10. Come si trasforma un documento Mongoose in un oggetto semplice?
- 11. Quando devo convalidare la presenza di un oggetto di associazione ActiveRecord rispetto al suo id?
- 12. Restangular - Get oggetto w/id, modificare oggetto, oggetto di aggiornamento
- 13. Ottieni oggetto con id()?
- 14. Quando la regola DENY delete nei Core Data effettivamente nega l'eliminazione di un oggetto?
- 15. Ottieni proprietà schema padre per la convalida con Mongoose e MongoDB
- 16. Mongoose: Impossibile salvare oggetto nidificato al modello nidificato
- 17. MongoDB: Univocità ID oggetto
- 18. Nome chiave variabile di Mongoose
- 19. Mongoose/MongoDB - Semplice esempio di aggiungendo a un array oggetto documento, con un pre-definito schema
- 20. Convalida dei token ID Google in C#
- 21. Android - Trova oggetto per ID
- 22. Postgresql ID oggetto e tuple
- 23. Passa un oggetto a una funzione che si aspetta shared_ptr senza effettivamente condividere la proprietà
- 24. Creazione di ID oggetto personalizzato in MongoDB
- 25. ID oggetto Java in jvm
- 26. DataAnnotazioni: convalida ricorsiva di un intero oggetto grafico
- 27. ArrayList Recupera oggetto con ID
- 28. Convalida il token ID JWT di OpenID Connect di Google
- 29. Token di convalida CSRF: ID di sessione sicuro?
- 30. Cosa causa effettivamente la chiamata di Session_Start?
Ha senso. Stiamo andando con le prestazioni, supponendo che stiamo codificando correttamente e NON inseriremo in un ID oggetto non esistente. Questo naturalmente ha il suo rischio, ma stiamo riscrivendo da java in node per abbinarci al resto della nostra architettura e, si spera, risolviamo alcuni gravi problemi di prestazioni che stavamo avendo. – CargoMeister