在for循环javascript中将数组插入到空数组

在for循环javascript中将数组插入到空数组,javascript,mongodb,Javascript,Mongodb,我有一个空数组&希望在for循环中插入从mongodb查询返回的所有数组,但数据没有推入arr。下面是代码: var arr = []; categoryObj.find({is_deleted:false,ancestors: []}, function(err, data) { if(data) { for (i=0;i< data.length;i++) { categoryObj.find({is_del

我有一个空数组&希望在for循环中插入从mongodb查询返回的所有数组,但数据没有推入arr。下面是代码:

  var arr = [];
   categoryObj.find({is_deleted:false,ancestors: []}, function(err, data) {
       if(data) {

           for (i=0;i< data.length;i++) {
               categoryObj.find({is_deleted:false}, function(err, result) {
                  if (result) {
                      arr[i].push(result);
                  }
              })
          }
       }
 console.log(arr);
}
var arr=[];
find({is_deleted:false,祖先:[]},函数(err,data){
如果(数据){
对于(i=0;i
非常感谢您的帮助。

如果结果不是空的,那么简单的arr.push(result)应该完成这件事(没有[i]),否则您应该通过在控制台中输出来检查结果是否没有返回任何内容。

var arr=[];
 var arr = [];

   for (i=0;i< data.length;i++) {
        categoryObj.find({is_deleted:false}, function(err, result) {
           if (result) {
                arr.push(result);
           }
        })
   }
 console.log(arr);
对于(i=0;i

执行
arr.push
而不是
arr[i]。push

如果数据是对象,则必须使用此代码:

for(var key in data){
    var value = data[key];
    /* do something with your data, e.g. arr.push(value); */
}
如果您的数据是数组,则可以使用代码,但要更改此行

arr[i].push(result);


categoryObj.find
在做什么?categoryObj是mongodb中的模型,我从中检索数据这可能是因为,在收到响应之前,您正在进行异步调用并运行循环。在这种情况下,请尝试Promise或回调函数。如果将调用参数中的函数,
arr[i].push()
可能会导致错误。
push
是创建
[i]的方法
,你不应该硬编码。你是以对象还是数组的形式获取数据的?你能发布/添加一个示例吗?我已经使用了它,但仍然获得了空数组。对象方式还是数组方式?你从mongoDB获得了什么样的返回值?你能发布它吗?尝试在顶部执行consol.log(数据)并告诉我控制台的输出。
arr.push(result);