gpt4 book ai didi

javascript - Array.Push 在 NodeJS 上不起作用

转载 作者:行者123 更新时间:2023-12-02 14:42:03 25 4
gpt4 key购买 nike

我无法让这段代码工作,我试图从我的数据库生成 5 个随机项并将它们存储到数组 (dato) 中,但是当我打印时它似乎是空的

/* GET users listing. */
router.get('/', function (request, response) {
var dato = new Array();

for(var i=0;i<7;i++){
almuerzoSchema.findRandom({}, {}, {limit: 5}, function(err, results) {
if (!err) {
results.forEach(function (record) {
dato.push(record.nombre);
});
}
});
}
console.log(dato);
response.render('almuerzo.jade',{almuerzovar: dato});
});

console.log(dato) 显示:

[]

如果我在 console.log 上打印“record.nombre”,它会正确显示

最佳答案

就像 Rayon 所说,代码是异步的,所以将其更改为这样的内容(因为异步,我正在使用 Promise ):

/* GET users listing. */
router.get('/', function (request, response) {
var dato = new Array(), promises =[];

for(var i=0;i<7;i++){
promises.push(promisifiedFindRandom())
}

Promise.all(promises).then(function(){
console.log(dato);
response.render('almuerzo.jade',{almuerzovar: dato});
})

function promisifiedFindRandom(){
return new Promise(function(resolve, reject){
almuerzoSchema.findRandom({}, {}, {limit: 5}, function(err, results) {
if (!err) {
results.forEach(function (record) {
dato.push(record.nombre);
});
resolve();
}else{
resolve();
}
});
})
}
});

编辑:node v4+原生支持 promise ,对于旧版本,可以使用polyfill/shim

关于javascript - Array.Push 在 NodeJS 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36929880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com