Pregunta

Estoy obteniendo un resultado (el objeto) de una consulta de mangosta y desea reemplazar / eliminar algunas teclas, antes de que rinde el objeto y envíelo al cliente.

Cuando consuelo.Log el objeto, todo es bueno (todas las llaves están listadas, nada más). Cuando hago un para ... en el objeto, los campos ocultos aparecen de la nada (y las claves de interés, no). Tienen sentido, pertenecen a la mangosta, pero no los quiero. Lo mismo ocurre, cuando se usa objetos. OKEYS.GETOWNPROPERTYNAMES EN EL OBJETO - CAMPOS OCULTUROS POPULAR, NINGUNA ÚTIL.

Así que quería inspeccionar el elemento con util.inspect (obj, verdadero, nulo, verdadero) y registrar el resultado de la consola. El resultado en la consola es el mismo, como si hubiera consolación. Anula el objeto directamente sin la inspección.

ahora, dos preguntas;

  1. ¿Cómo inspecciono correctamente un objeto, para que realmente obtenga información interna / oculta sobre el objeto?
  2. ¿Cómo puedo iterar sobre el objeto y solo obtener los campos? (Sí, estoy haciendo el cheque de HadownProperty dentro de los ... en lazo)

    // editar

    OK, lo tengo. Después de alguna investigación, me di cuenta de que el objeto de mangosta proxtima sus propiedades y tiene una función de TOJSON, que explica por qué la consola. LosOgs estaban en la estructura de salida esperada. La solución es usar el método de toobject propio de mangosta;

    mongooseObj.toObject({ getters: true, virtuals: false })
    

    De esta manera, puedo iterar sobre objetos.GetownPropertynames y reemplazar / eliminar las teclas ¡No quiero que el cliente sepa sobre!

¿Fue útil?

Solución

Voy a adivinar que está mirando el documento devuelto por una consulta de mangosta cuando realmente solo quiereVer los datos.Si mi conjetura es correcta, probablemente querrá algo como esto:

Model.findOne({ name: 'john' }, function (err, doc) {
    var data = doc.toObject();

    // do whatever you need to with data
    delete data.age;
    delete data.weight;
    data.isAwesome = true;

    // now stringify the data and do something with it
    callback(JSON.stringify(data));
});

Otros consejos

También si desea acceder a un campo determinado de un documento puede echar un vistazo a:

Documento # GET

// path
doc.get('age') // 47

// dynamic casting to a string
doc.get('age', String) // "47"

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