Sto provando ad avere un documento nidificato "opzionale" in uno dei miei modelli. Ecco uno schema di campionamentoProprietà nested opzionale di Mongoose: verificare la presenza di null/undefined?
var ThingSchema = mongoose.Schema({
name: String,
info: {
'date' : { type: Date },
'code' : { type: String },
'details' : { type: Object }
}
})
var Thing = mongoose.model('Thing', ThingSchema);
In questo caso, voglio che la proprietà "info" per essere possibilmente null (non richiesto), e dovrà logica dell'applicazione che controlla se le informazioni è nullo/indefinito.
Sfortunatamente, anche se la proprietà 'info' non è definita nel documento in mongo, mangusta restituisce ancora un oggetto per il campo 'informazioni' all'interno del modello recuperato.
Ad esempio, quando si esegue questo codice, l'oggetto 'informazioni' viene popolato con un oggetto (vuoto).
var thingOne = new Thing({
name: "First Thing"
})
thingOne.save(function(err, savedThing) {
if (savedThing.info) {
//This runs, even though the 'info' property
//of the document in mongo is undefined
console.log("Has info!");
}
else console.log("No info!");
})
ho cercato di definire ThingSchema come la seguente
var ThingSchema = mongoose.Schema({
name: String,
info: {
type: {
'date' : { type: Date },
'code' : { type: String },
'details' : { type: Object }
},
required: false
}
})
Il che mi permette di avere un non definito "info" proprietà recuperata dal database, ma facendo questo mi permette di rompere lo schema "informazioni" e aggiungi proprietà casuali come
savedThing.info.somePropertyThatDoesNotExistInTheSchema = "this shouldn't be here";
Che verrà quindi mantenuto nel database. Inoltre, se la proprietà "info" contiene ulteriori documenti nidificati, l'aggiornamento non contrassegna il modello di Thing come sporco, il che significa che devo contrassegnarlo manualmente come modificato (tramite thing.markModified (percorso))
C'è un modo per realizzare ciò che sto cercando di fare? Ci sono delle buone pratiche per questo? Sto semplicemente usando schemi di mangimi in modo completamente errato?
ho bisogno di uno
- recuperare una proprietà "info" nullo per lo schema Thing
- avere qualche modo per verificare se la proprietà "info" è in realtà nulla a Mongo, anche se mangusta conferisce un valore quando viene recuperato.
Cosa succede se si utilizza il primo schema e si verifica con hasOwnProperty se l'articolo restituito contiene "informazioni"? Questo non significa che restituisce null, ma almeno puoi verificare se ci sono più informazioni. Se questa non è un'opzione, ti prego di dirmi di più in merito alla ricerca di null/undefined, così posso trovare un altro modo. –