我是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
答案 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() -> 从游标返回数组