【问题标题】:Maximum call stack size exceeded in mongo updatemongo 更新中超出了最大调用堆栈大小
【发布时间】:2015-09-22 23:01:35
【问题描述】:

我正在尝试使用节点 js 更新 mongo db 字段,但它显示错误:

超过最大调用堆栈大小

这是我的代码:

var async = require('async');
var mongoose = require('mongoose');

module.exports = function (app) {
Tweets.find().exec(function(err, oldTweets){
    if(err){
        console.log(err);
    }
    else{
        //console.log(oldTweets);
        console.log('=== MIGRATION OF TWEETS STARTS ===');
        async.eachSeries(oldTweets, function(tweet, iterateNext){


            Tweets.update( { _id:tweet._id }, { $rename: { 'celebrityId': 'entityId' } } ).exec(function(err, cel){
                if(err){
                    console.log(err);
                }
                else{
                    console.log(cel);
                    iterateNext(null);
                }
            });
        }, function(err){
            console.log('=== MIGRATION ENDED ===');
        }); 
    }
});

};

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    这是直接从异步https://github.com/caolan/async#synchronous-iteration-functions的文档中获取的


    同步迭代函数

    如果您在使用异步时遇到RangeError: Maximum call stack size exceeded. 之类的错误或其他堆栈溢出问题,您很可能使用了同步迭代器。 同步是指一个函数,它在 javascript 事件循环中的同一滴答声中调用其回调,而不进行任何 I/O 或使用任何计时器。迭代调用许多回调将很快溢出堆栈。如果遇到此问题,只需使用 async.setImmediate 推迟回调,以便在事件循环的下一个滴答声中启动新的调用堆栈。

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2013-08-23
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多