Entonces, he visto muchas preguntas similares sobre el conteo de entradas de la base de datos y he descubierto cómo usar las funciones de devolución de llamada para consolar. Registrar el número, pero debido al alcance local de esa devolución de llamada, no puedo entender cómo USAR ese número en otro función. Me gustaría hacer un generador de números aleatorios entre 0 y la cantidad de documentos en mi base de datos. Esto es lo que tengo hasta ahora.
Comic.countDocuments({}, function (err, count) { if (err){ console.log(err) }else{ console.log(count) } });Me encantaría que funcionara así, pero no es así. Cada vez que lo hago, num termina siendo una gran cantidad de metadatos en lugar de un número. ¿Algunas ideas?
let num = Comic.countDocuments({}, function (err, count) { if (err){ console.log(err) }else{ return count } }); console.log(Math.floor(Math.random() * num))No hay forma de devolver datos desde la función async , porque es de naturaleza asíncrona. Puede leer esta respuesta en SO para comprender mejor cómo funcionan las llamadas asíncronas.
Pero simplemente puede hacerlo un poco usando async/await
const randomFunction = async() => { let num = await Comic.countDocuments({}); console.log(Math.floor(Math.random() * num)); } Entonces puedes llamar a randomFunction(); donde quieras (siempre que se exporte, si se usa en un archivo separado).
Esto console.log . registrará el número aleatorio