数组推送不起作用

时间:2014-05-18 10:21:44

标签: node.js mongoose

我正在使用Express和猫鼬。不知道为什么array.push不起作用。也许我在异步函数中调用它。

function x(){
    var a = [] ;
    database.auth.distinct('tag',function(err , tagname){
        console.log(tagname); // printing tag names perfectly
        a.push(tagname);

    });
       console.log("a =" ,a); // printing an empty array 
    /*for(var x = 0; x< a.length ; x++){  //so this block is not working .
        database.auth.count({ 'tag' : a[x] },function(err, nish){
            // a[tagname[x]] = nish.length ;

        });*/

   // }

2 个答案:

答案 0 :(得分:1)

push方法是在稍后可能执行的回调中,因此您必须在那里检查数组。

function x() {
    var a = [];

    database.auth.distinct('tag',function(err , tagname){
        console.log("2");
        console.log(tagname); // printing tag names perfectly
        a.push(tagname);
        console.log("Array length: ", a.length);
    });

    console.log("1");
}

答案 1 :(得分:1)

您的数组会在回调中填充,因此您可以列出回调中的值:例如:

function x(){
    var a = [] ;
    database.auth.distinct('tag',function(err , tagname){
        console.log(tagname); // printing tag names perfectly
        a.push(tagname);
        console.log("a =" ,a); // 
        for(var x = 0; x< a.length ; x++){  //so this block is not working .
        database.auth.count({ 'tag' : a[x] },function(err, nish){
            // a[tagname[x]] = nish.length ;
        });

    });
       console.log("a =" ,a); // printing an empty array 
    }