Nodo, mangusta: rimuovi JSON ELEMENT dal risultato della query con Elimina
-
21-12-2019 - |
Domanda
ottengo questo strano comportamento.Ecco la cosa: faccio una query del database e vuoi eliminare un elemento del JSON restituito dalla query.Quindi questo non sembra funzionare (cioè l'elemento non è cancellato),
var user=json;
delete user.element;
.
Mentre funziona
var user={element:json.element,blement:'stuff'}
delete user.element;
. Soluzione
Penso che cosa ti riferisca come JSON è in realtà un oggetto documento mongoose dato i tag che hai aggiunto alla tua domanda. Poiché quell'oggetto è allegato al suo "schema", potresti avere regole nel campo "Richiesto" o tali che interferiscono con l'operazione che stai cercando di fare.
Per ottenere una forma grea dell'oggetto, è sufficiente utilizzare il metodo .toObject()
sul risultato del documento:
Model.findOne({ _id: id}, function(err,doc) {
var raw = doc.toObject();
delete raw.element;
console.log( raw );
});
.
certo che puoi sempre omettere il campo dall'essere restituito nel risultato della query con il modulo base fornito da .select()
:
Model.findOne({ _id: id}, '-element', function(err,doc) {
console.log( doc );
});
.
Ad entrambi la forma rimuoverà quel particolare campo dalla risposta, ma se si desidera più controllo del risultato rispetto a quello che può essere fornito dalla proiezione del campo da .select()
quindi utilizzare il modulo .toObject()
e manipolare come un oggetto JavaScript semplice.