我想在异步方法中的forEach之后返回一个名字数组。 for each和res.send都在Asyn中。方法。 forEach完美地运行,但我总是得到一个空数组。
这是我在网站方面的要求:
function retrieveCharity(){
$.ajax({
type:"GET",
url: "http://xxx.xxx.x.xx:9000/charity",
success: function(data){
data.charities.forEach(function(charityName){
$(".charity-ul").append("<li>"+charityName+"</li>");
})
}
})
}
这是我在NodeJs方面的router.get监听器:
router.get('/', function (req, res){
log.d("Entrou no method post - Charity");
teamModel.find({},function(err,charities){
var charityMap = {};
if(err){
console.log("Err in retrieving Charity")
log.d("Err in retrieving")
res.send({
"status":"error"
})
}else{
charities.forEach(function(charity){
charityMap[charity._id]= charity.teamName;
console.log("Print here the name of the charities I have,PLEASE" + charity.teamName);
log.d("foEach - data",charity);
})
res.send({
"charities": charityMap
})
}
})//end of findCahrity
});
我要求在其中打印的所有log.d和信息都是正确的,并打印出来。问题是我返回的数组总是空的,但是(forEach)和res.send都在异步方法中。
我总是在帖子中得到这个:
{
charities: { }
}
并且控制台总是说:
Uncaught TypeError: undefined is not a function
这一行:
data.charities.forEach(function(charityName){
是的,请有人帮帮我。我做错了什么?
提前致谢。
答案 0 :(得分:0)
我认为Object.prototype.forEach
不是标准。
data.charities
是一个对象而不是数组。您可以尝试从
var charityMap = {};
charityMap[charity._id]= charity.teamName;
到
var charityMap = [];
charityMap.push(charity.teamName)
或更改客户端的迭代。