Pregunta

Tengo este extraño comportamiento.Aquí está la cosa:Puedo hacer una consulta de base de datos y desea eliminar un elemento de la json devuelto por la consulta.Así que esto parece que no funciona (es decir,el elemento no se elimina),

var user=json;
delete user.element;

aunque esto funciona

var user={element:json.element,blement:'stuff'}
delete user.element;
¿Fue útil?

Solución

Creo que lo que usted se refiere a JSON, que es en realidad una Mangosta documento objeto dado las etiquetas que has añadido a tu pregunta.Dado que el objeto está pegado a la "esquema", usted puede tener reglas en que hay como una "necesaria" de campo o de esos que están interfiriendo con la operación que está tratando de hacer.

Con el fin de obtener una forma cruda del Objeto, sólo tiene que utilizar el .toObject() método en el documento resultado:

Model.findOne({ _id: id}, function(err,doc) {

    var raw = doc.toObject();
    delete raw.element;

    console.log( raw );

});

Por supuesto, usted siempre puede omitir el campo desde que se devuelve el resultado de la consulta con la forma básica proporcionada por .select():

Model.findOne({ _id: id}, '-element', function(err,doc) {

    console.log( doc );

});

De cualquier forma iba a quitar ese campo en particular a partir de la respuesta, pero si usted desea más control sobre el resultado, de lo que puede ser proporcionada por el campo de proyección de .select() a continuación, utilice el .toObject() forma y manipular sólo como un simple objeto de JavaScript.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top