我正在使用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 ;
});*/
// }
答案 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
}