回调节点 js 中的响应未定义?
2017-10-19
192
我正在尝试调用一个函数,该函数从集合中检索所有文档并返回数据。现在,一切正常,但由于某种原因,我从函数回调中获得了未定义的响应。我可能做错了什么?
var findImages = function(db, callback) {
var s ="";
db.collection('imageinfo', function(err, collection) {
collection.find().toArray(function(err, items) {
for(var i=0;i<items.length;i++){
console.log("imagename",items[i].imagename);
s =s + items[i].imagename+",";
}
if(i==items.length){
callback(s);
}
});
});
};
app.get("/fetchrecords",function(req,res){
console.log("entered");
findImages(db,function(req,res){
console.log("res",res);
});
res.end("Sent records");
});
2个回答
I am getting an undefined response from my function callback.
findImages
的回调
在调用
callback(s);
时仅返回一个参数>
但在回调定义中,您记录了第二个参数。相反,只记录第一个参数
findImages(db,function(res){
console.log("res",res);
});
gurvinder372
2017-10-19
i 永远不会与 items.length 相同。因为原因 1 i 不在您的 for 循环中,所以它超出范围。 原因 2,即使 i 在您的循环中,您的循环也会为 i 提供最大值 items.length -1,因为您使用了 <。
您的解决方案:
var findImages = function(db, callback) {
var s ="";
db.collection('imageinfo', function(err, collection) {
collection.find().toArray(function(err, items) {
var i = 0;
while( i<items.length){
console.log("imagename",items[i].imagename);
s =s + items[i].imagename+",";
i++;
}
callback(s);
});
});
};
H. Hakvoort
2017-10-19