Tiene problemas para extraer los datos de una promesa de mangosta. Quiero encontrar un conjunto de usuarios de mongoose usando una identificación apropiada y pasando el resultado a lo largo de una cadena de promesa.
La consulta está extrayendo los datos correctos de la base de datos. Cuando anido la consulta dentro de una cadena de promesa y luego intento transmitir el resultado, mi console.log muestra [Function (anonymous)] . ¿Existe una estructura apropiada para extraer los datos de MongoDB usando mongoose y luego pasar esos datos a lo largo de una cadena de promesa?
Cadena de promesas:
addItem(guildId, items, timeCreated) { return new Promise((resolve, reject) => { // other functionality omitted for brevity resolve(guildId, items, timeCreated); }).then((guild, item, timeCreate) => { findGroupUsers(guild).then((response) => { return new Promise((resolve, reject) => { console.log(response.userId); resolve(response); }); });Consulta de mangosta:
const findGroupUsers = async (guildId) => { const members = await EngagementTracking.find({ guildId: `${guildId}` }).exec(); console.log(members); return members; };La respuesta verificada extrae con éxito los datos de la consulta dentro de addItem. Para continuar y pasar el resultado de la consulta a lo largo de la cadena, hice lo siguiente:
addItem(guildId, items, timeCreated) { return new Promise((resolve, reject) => { //other functionality resolve(guildId, items, timeCreated); }).then((guild, items, timeCreate) => { return findGroupUsers(guild).then((response) => { return new Promise((resolve) => { resolve(response); }); }); }).then((data) =>{// other functionality //});Su función de agregar elemento parece un poco extraña, debería hacer esto en su lugar:
addItem(guildId, items, timeCreated) { return new Promise((resolve, reject) => { // other functionality omitted for brevity resolve(guildId, items, timeCreated); }).then((guild, predict, timeCreate) => { return findGroupUsers(guild).then((response) => { console.log(response.userId); return response; });no necesita devolver una nueva promesa dentro de un .entonces también tenga en cuenta que debe devolver su promesa (no devolvió findGroupUser)
al final deberías tener addItem.then(/ hacer algo /) o esperar