Estoy usando firebase para verificar el historial de castigos de los usuarios, y cuando lo llamo: quiero que devuelva la matriz de incrustaciones para publicar en lugar de solo eso. Estoy esperando la función, así que estoy un poco confundido por qué sucede esto.
Esto es lo que sucede en el archivo console.log:

[AsyncFunction: CheckHistory]LLAMAR
let hist = await CheckHistory(id); console.log(CheckHistory);FUNCIÓN
async function CheckHistory(user){ CheckBan(user); let historyArray = []; const colRef = db.collection('punishments') colRef.where('user', '==', user).get().then(async querySnapshot => { length = querySnapshot.size; if (querySnapshot.empty){ console.log(querySnapshot.size) return 0; } else { let docs = querySnapshot.docs; for (let documentSnapshot of docs) { const revoke = documentSnapshot.get('revoke') let active = documentSnapshot.get('active') if (active = true){ active = "Active" } else { active = `Revoked for ${revoke}` } const mod = documentSnapshot.get('mod') const reason = documentSnapshot.get('reason'); const time = documentSnapshot.get('time'); let type = documentSnapshot.get('type'); if (type == 1){ type = "Blacklist"; } else if (type == 2){ type = "Dayban"; } else if (type == 3){ type = "Warning"; } const username = await API.getUsernameFromId(user); const modname = await API.getUsernameFromId(mod); const historyEmbed = new MessageEmbed() .setColor('#0099ff') .setTitle(`'Punishment of ${username}:${user}`) .setDescription(`This is a punishment log.`) .addFields( { name: 'Status', value: `${active}`}, { name: 'Moderator', value: `${modname}:${mod}` }, { name: 'Reason', value: `${reason}` }, { name: 'Type', value: `${type}` }, { name: 'Time', value: `<t:${time}>`} ) historyArray.push(historyEmbed); if (historyArray.length >= length) { return historyArray; } } } }); }Como declaró @Sergey Sosunov :
Olvidaste devolver algo de tu método, deberías
return colRef.where('user', '==', user).get().then....O para cambiar el enfoque de devolución de llamada
.then()paraawaitrealmente uno. Me gusta:const querySnapshot = await colRef.where('user', '==', user).get();y así.
Además, la forma en que llama a la función solo devuelve la definición de función; debe pasar con parámetros o imprimir el valor de la variable igual a su función. Por ejemplo:
//Sample function function test(id) { return id; } //Returns function definition console.log(test) //Returns function value console.log(test(1)) //Print variable value let x = test(1) console.log(x)