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;
.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top