Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js错误:RangeError:超出最大调用堆栈大小_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript Node.js错误:RangeError:超出最大调用堆栈大小

Javascript Node.js错误:RangeError:超出最大调用堆栈大小,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我是NodeJs的新手,在运行我的应用程序时遇到了一个问题。我正在尝试制作一个图片竞赛页面,我想在主页上显示最新的评论,并将评论发布的图片附在上面。我得到的错误如下所示:RangeError:超出了最大调用堆栈大小,在模型中引用了我的代码。(\rootproject\models\comment.js:15:16) 整个错误代码如下所示: RangeError: Maximum call stack size exceeded at model.Document.set (C:\User

我是NodeJs的新手,在运行我的应用程序时遇到了一个问题。我正在尝试制作一个图片竞赛页面,我想在主页上显示最新的评论,并将评论发布的图片附在上面。我得到的错误如下所示:
RangeError:超出了最大调用堆栈大小
,在模型中引用了我的代码
。(\rootproject\models\comment.js:15:16)

整个错误代码如下所示:

RangeError: Maximum call stack size exceeded
    at model.Document.set (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:526:
34)
    at model.set [as image] (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:19
01:25)
    at model.<anonymous> (C:\Users\Rares\Desktop\rootproject\models\comment.js:15:16)
    at VirtualType.applySetters (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\virtualtyp
e.js:94:25)
    at model.Document.set (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:694:
12)
    at model.set [as image] (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:19
01:25)
    at model.<anonymous> (C:\Users\Rares\Desktop\rootproject\models\comment.js:15:16)
    at VirtualType.applySetters (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\virtualtyp
e.js:94:25)
    at model.Document.set (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:694:
12)
    at model.set [as image] (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:19
01:25)
    at model.<anonymous> (C:\Users\Rares\Desktop\rootproject\models\comment.js:15:16)
    at VirtualType.applySetters (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\virtualtyp
e.js:94:25)
    at model.Document.set (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:694:
12)
    at model.set [as image] (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\document.js:19
01:25)
    at model.<anonymous> (C:\Users\Rares\Desktop\rootproject\models\comment.js:15:16)
    at VirtualType.applySetters (C:\Users\Rares\Desktop\rootproject\node_modules\mongoose\lib\virtualtyp
e.js:94:25)

提前谢谢你

您在
async.each
中做什么?我正在使用
async.each
循环查看
注释
集合中的每个项目,并将每个项目作为参数发送到回调函数
attachImage
。第三个参数应该是整个系列完成后执行的回调函数集合。看起来像是您的
Comment
schema有一个调用自身的模式(可能是通过另一个模式间接调用的)。我的注释模型看起来像这样:
var CommentSchema=newschema({image\u id:{type:ObjectId},email:{type:String},name:{type:String},gravatar:{type:String},注释:{type:String},时间戳:{type:Date,“default”:Date.now});CommentSchema.virtual('image').set(函数(image){this.image=image;}).get(函数(){returnthis.\u image;})
var models = require('../models'),
async = require('async');

module.exports = {
newest: function(callback) {
    models.Comment.find({}, {}, {
            limit: 5,
            sort: {
                'timestamp': -1
            }
        },
        function(err, comments) {
            var attachImage = function(comment, next) {
                models.Image.findOne({
                        _id: comment.image_id
                    },
                    function(err, image) {
                        if (err) throw err;

                        comment.image = image;
                        next(err);
                    });
            };

            async.each(comments, attachImage,
                function(err) {
                    if (err) throw err;
                    callback(err, comments);
                });
        });

}
};