javascript - 使用 Async.parallel 我的参数的生命周期不会超过使用 MongoDB 的 NodeJS 中的异步调用

标签 javascript node.js mongodb express asynchronous

由于以下代码是异步的,我认为“recipeData”数组的生命周期不足以超过异步回调,所以我在全局数组中复制了数据,但我仍然收到相同的错误“类型错误:无法读取未定义的属性‘_id’”。这是代码:

var tempArray;

function getAllRecipes( db, callback )
{
    query( db, {}, 'recipes', function( err, recipeData )
    {
        tempArray = recipeData.slice();

        if( err || !tempArray.length )
            callback( err );
        else
        {
            var taskArr = [];

            for( var i=0; i < tempArray.length; i++ )
            {               
                taskArr.push( function( iCallback )
                {
                    getRecipeNotes( db, tempArray[ i ]._id, function( err2, noteData )
                    {
                        if( err2 )
                            iCallback( err2 );

                        tempArray[ i ].notes = noteData;
                        iCallback();
                    });
                });
            }

            taskArr.push( function( err3 )
            {
                callback( err3, tempArray );
            });

            async.parallel( taskArr );
        }
    });
}

调用“getRecipeNotes”时发生错误。

谁能帮我弄清楚我哪里出错了?

谢谢。

最佳答案

另一种选择是使用 let i 代替 var i。不过,它是一项较新的功能(由去年发布的 ES6 标准化)并且在浏览器支持方面存在一些限制。 – 乔纳森·洛诺夫斯基 2 天前

let 被 Node 4.x 及更高版本支持,前提是你“使用严格”;以及(这是 V8 目前强加的临时限制)。如果您使用的是较低版本(0.12.x 等),--harmony 命令行标志可能会启用它。 – 乔纳森·洛诺夫斯基 2 天前

关于javascript - 使用 Async.parallel 我的参数的生命周期不会超过使用 MongoDB 的 NodeJS 中的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35673129/

相关文章:

javascript - 如何从 Mongoose Query 转换日期字符串?

Javascript 不能在 IE8 中运行

node.js - 无法解决 Mongoose 模型的循环依赖

node.js - PM2忽略生态系统文件

mongodb 2.4.1 失败并显示 'process out of memory'

MongoDB 使用 $sort 更新 $push 到数组数组

javascript - 将slideUp和slideDown添加到隐藏的div中

javascript - 为 1 个 div 执行 JQuery 函数

node.js - 可以将 npm 3.x 与 nodejs 4.x 一起使用吗?

java - 我们如何解决: "the method insert(DBObject[]) in the type DBCollection is not applicable for the arguments (BasicDBObject)?