Ho un documento da una ricerca di mangusta che voglio estendere prima della codifica JSON e l'invio come risposta. Se provo ad aggiungere proprietà al documento, viene ignorato. Le proprietà non compaiono in Object.getOwnPropertyNames(doc)
rendendo impossibile un'estensione normale. La cosa strana è che JSON.parse(JSON.encode(doc))
funziona e restituisce un oggetto con tutte le proprietà corrette. C'è un modo migliore per farlo?Come si trasforma un documento Mongoose in un oggetto semplice?
risposta
Mongoose Model
s eredita da Document
s, che hanno un metodo toObject()
. Credo che quello che stai cercando dovrebbe essere il risultato di doc.toObject()
.
http://mongoosejs.com/docs/api.html#document_Document-toObject
Un altro modo per farlo è quello di dire a Mongoose che tutto ciò che serve è una pianura versione JavaScript del documento restituito da utilizzando lean()
nella catena query. In questo modo Mongoose salta la fase di creazione dell'istanza modello completo e direttamente ottiene un doc
è possibile modificare:
MyModel.findOne().lean().exec(function(err, doc) {
doc.addedProperty = 'foobar';
res.json(doc);
});
toObject non funzionerebbe per me. lean() è perfetto – Deminetix
Il nodo dice che il documento non ha il metodo toObject() ma .lean() funziona come per magia! – salihcenap
Grande consiglio, grazie! –
il modo più veloce se la proprietà non è nel modello:
document.set(key,value, { strict: false });
sì ... e per quanto possa sembrare sorprendente, penso che questo possa essere utile. Ad esempio, tieni tutte le primitive del tuo oggetto. –
Grazie per questa risposta, era quello che stavo cercando :) – datUser
un modo migliore per risolvere affrontare un problema come questo sta usando doc.toObject()
come questo altri
doc.toObject({ getters: true })
opzioni includono:
getters:
applicare tutte getter (percorso e getter virtuali)virtuals:
applicare getter virtuali (ignori opzione getter)minimize:
rimuovere oggetti vuoti (default true)transform:
una funzione di trasformazione per applicare il documento risultante prima di restituiredepopulate:
spopolare qualsiasi percorso popolato, sostituendolo con i propri riferimenti originali (predefinito su falso)versionKey:
se includere la chiave di versione (di default a true)
così per esempio si può dire
Model.findOne().exec((err, doc) => {
if (!err) {
doc.toObject({ getters: true })
console.log('doc _id:', doc._id)
}
})
e ora lavorerà
- 1. Mongoose/MongoDB - Semplice esempio di aggiungendo a un array oggetto documento, con un pre-definito schema
- 2. Posso/dovrei indicizzare un documento incorporato in Mongoose?
- 3. findOne documento secondario in Mongoose
- 4. Come posso convertire un oggetto TypeScript in un oggetto semplice?
- 5. Come scrivere un oggetto semplice in PHP
- 6. creare un documento javascript Oggetto
- 7. Mongoose trovare/aggiornamento documento secondario
- 8. Come si trasforma un array PHP in $ keys e $ values?
- 9. Trovare un documento MongoDB da ObjectId con Mongoose
- 10. La Mongoose convalida effettivamente l'esistenza di un ID oggetto?
- 11. Come si definiscono i metodi in un modello Mongoose?
- 12. Come si converte un documento di Word in html molto semplice in Python?
- 13. Trasforma una stringa NSAattribuita in testo semplice
- 14. Salvataggio di un oggetto Mongoose in due raccolte
- 15. Come si aggiunge un tipo di documento a un XDocument?
- 16. Mongoose: non mette _id al documento incorporato
- 17. Mongoose indice univoco sul documento secondario
- 18. Come si controlla se un documento incorporato esiste in un documento in mongoi?
- 19. Mongoose avanzato schema personalizzato tipo di oggetto
- 20. Come impostare _id sul documento db in Mongoose?
- 21. Trasforma un controllo trasparente
- 22. schema di documento Mongoose e validazione
- 23. Come si aggiunge un XElement a un documento, evitando l'errore "documento strutturato in modo errato"?
- 24. Mongoose - eliminare l'elemento dell'array documento secondario
- 25. ordinamento mongoose-paginate con documento di riferimento
- 26. Numero di incremento automatico del documento in Mongo/Mongoose
- 27. Come si imposta un timeout su una query Mongoose?
- 28. NSDato che si trasforma in NSNumber MYSTERY
- 29. Come rilevare l'errore quando si inserisce un documento MongoDB che viola un indice univoco?
- 30. Come si elimina un documento incorporato in mongomapper?
che ha fatto ... Grazie. – respectTheCode
Non ha funzionato per me. La soluzione sotto ha fatto però. – Antoine
toObject undefined – John