No puedo acceder a la propiedad del objeto, aunque aparece en un registro de la consola

Resuelto Brian Litzinger asked hace 11 años • 36 respuestas

A continuación, puede ver el resultado de estos dos registros. El primero muestra claramente el objeto completo con la propiedad a la que estoy intentando acceder, pero en la siguiente línea de código, no puedo acceder a él config.col_id_3(¿ve "indefinido" en la captura de pantalla?). ¿Alguien puede explicar esto? Puedo tener acceso a todas las demás propiedades excepto field_id_4también.

console.log(config);
console.log(config.col_id_3);

Esto es lo que imprimen estas líneas en Consola

Salida de consola

Brian Litzinger avatar Jul 09 '13 18:07 Brian Litzinger
Aceptado

El resultado de console.log(anObject)es engañoso; el estado del objeto mostrado solo se resuelve cuando expandes el árbol de objetos mostrado en la consola, haciendo clic en >. No es el estado del objeto cuando console.loglo compraste.

En su lugar, pruebe console.log(Object.keys(config)), o incluso console.log(JSON.stringify(config))y verá las claves o el estado del objeto en el momento en que llamó console.log.

(Por lo general) encontrará que las claves se agregan después de su console.logllamada.

Matt avatar Jul 09 '2013 11:07 Matt

Acabo de tener este problema con un documento cargado desde MongoDB usando Mongoose .

Cuando se ejecuta console.log()en todo el objeto, aparecerán todos los campos del documento (tal como están almacenados en la base de datos). Sin embargo, algunos descriptores de acceso a propiedades individuales regresarían undefined, cuando otros (incluido _id) funcionaron bien.

Resultó que los descriptores de acceso a propiedades solo funcionan para aquellos campos especificados en mi mongoose.Schema(...)definición, mientras que console.log()y JSON.stringify()devuelve todos los campos almacenados en la base de datos.

Solución (si está utilizando Mongoose) : asegúrese de que todos los campos de su base de datos estén definidos en mongoose.Schema(...).

ramin avatar Apr 09 '2016 20:04 ramin

Tuve el mismo problema. La solución para mí fue usar la salida en cadena como entrada para analizar el JSON. esto funcionó para mí. Espero que te sea útil

var x =JSON.parse(JSON.stringify(obj));
console.log(x.property_actually_now_defined);
Tope avatar Jan 27 '2016 13:01 Tope