Meteor:Uncaught RangeError:超出最大调用堆栈大小

时间:2017-02-21 18:41:45

标签: meteor

我是Meteor的新手。我正在做简单的应用程序。 这是我遇到的问题:

Template.newFeedForm.events({
   'submit #new-feed-form'(event) {
       event.preventDefault();

       const target = event.target;
       const text = target.text;

       Meteor.call('feeds.insert', text);

       target.text.value = '';
   }
});

所以我有newFeedForm模板,在我的feeds.js中我有

Meteor.methods({
    'feeds.insert'(text){
        check(text, String);
        //check(hashtag, String);

        // Make sure the user is logged in before inserting a task
        if (! this.userId) {
            throw new Meteor.Error('not-authorized');
        }
        console.log(this.userId);

        // Feeds.insert({
        //     text: text,
        //     owner: this.userId,
        //     username: Meteor.users.findOne(this.userId).username,
        //     createdAt: new Date()
        // });
    }
});

我在这里注释了Feeds.insert,认为它导致了问题。似乎它是不同的东西。 每当Meteor.call被执行时,我得到了这个:

Uncaught RangeError: Maximum call stack size exceeded
    at Function._.(anonymous function) [as isArguments] (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:1068:30)
    at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:512:25)
    at http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:531:22
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:157:22)
    at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:530:5)
    at http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:531:22
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:157:22)
    at Object.EJSON.clone (http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:530:5)
    at http://localhost:3000/packages/ejson.js?hash=0f17ced99d522d48cd8f8b2139167fd06babd969:531:22
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?hash=cde485f60699ff9aced3305f70189e39c665183c:157:22)

不知道发生了什么。 这是我的repo,它重现了这个错误: https://github.com/yerassyl/nurate-meteor

2 个答案:

答案 0 :(得分:3)

通常情况下,当出现这样的错误时(特别是在处理流星方法时),这意味着您可能没有传递“正确的”数据(或您认为的数据)。

查看表单处理代码,我注意到您永远无法获取textarea文本数据。

const text = target.text;

target.text返回实际的textarea DOM对象,但你真正追求的是对象包含的值。以下代码将解决您的问题。

const text = target.text.value;

答案 1 :(得分:0)

当您使用 db.find() 处理流星时。它给出错误 RangeError: Maximum call stack size exceeded,因为它返回的是响应数据源的游标。

使用此 db.find().fetch() 以数组形式获取数据。

<块引用>

db.find() -> 返回游标是反应数据源

db.find().fetch() -> 从游标返回数组