No puedo acceder a la propiedad del objeto, aunque aparece en un registro de la consola
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_4
también.
console.log(config);
console.log(config.col_id_3);
Esto es lo que imprimen estas líneas en Consola
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.log
lo 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.log
llamada.
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(...)
.
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);