我正在尝试在Express中实现一个函数来返回一个包含mongoose模型数据的列表。 'MiModelo'是从Schema创建的猫鼬模型。
//Get data in the DB
function getAllData()
{
var promesa = MiModelo.find().exec();
console.log(promesa);
console.log("---");
var miLista=[];
async = require('async');
async.parallel([function(){
promesa.then(function(datos)
{
datos.forEach(function(dato){
console.log("dato: " + dato.numero)
miLista.push(dato.numero);
});
});
}],function(){
console.log(miLista);
});
return miLista;
}
在最后的console.log()中,我能够从数据库中获取所有'numero'字段值,但是当我在其他地方调用此函数时返回为空。我知道这是因为它是异步的。
我已经阅读了这个问题的答案:How to make a function wait until a callback has been called using node.js但我不知道如何调整我的功能。
感谢任何帮助。
感谢您的时间和帮助。
答案 0 :(得分:0)
整个功能可以简化为几行:
async function getAllData() {
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
const datos = await MiModelo.find().exec();
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
const miLista = datos.map(dato => dato.numero)
return miLista;
}
然后你可以这样打电话:
const data = await getAllData()
// or
getAllData().then(data => console.log(data))