使用Mongoose进行正确查询,但在forEach之后数组始终为空。的NodeJS / MongoDB的

时间:2014-08-25 15:22:25

标签: javascript arrays node.js mongodb foreach

我想在异步方法中的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){
是的,请有人帮帮我。我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为Object.prototype.forEach不是标准。 data.charities是一个对象而不是数组。您可以尝试从

更改路由器代码
var charityMap = {};

charityMap[charity._id]= charity.teamName;

var charityMap = [];

charityMap.push(charity.teamName)

或更改客户端的迭代。