我在Meteor.js中遇到了被动会话的问题。
演示:Meteor Pad
Template.rows.helpers({
'rows': function () {
return Session.get('rows'); // data set in Session
}
});
Template.count.events({
'click .mdl-radio__button': function (e) {
// target represents a number of selected rows (1, 2, 5, or 10)
var value = $(e.currentTarget).val();
Session.set('limit', value);
},
'click #reset': function () {
Session.set('limit', 0);
Session.set('rows', null);
},
'click #run': function () {
// should only get rows when run() is pressed
Session.set('rows', currentItems);
}
});
用户应该能够选择要接收的新数量的集合,受限制控制。但是,我一直收到以下错误:
Error: Match error: Failed Match.OneOf or Match.Optional validation
任何想法为什么?有人能给我看一个有效的MeteorPad演示吗?
答案 0 :(得分:0)
我的meteorpad遇到了麻烦。但你的问题不是Session
。问题是您使用Tracker.autorun
。您应该阅读docs on that。
您假设Tracker.autorun(getItems)
返回getItems
返回的内容。事情并非如此艰难。您需要在currentItems
内设置autorun
(在您的情况下为getItems
)。
getItems = function () {
if (Session.get('limit') > 0) {
currentItems = Items
.find({}, {limit: Session.get('limit')})
.map(function (item, index) {
item.index = index + 1;
return item;
});
} else {
currentItems = null;
}
};
答案 1 :(得分:0)
终于明白了。显然,Session会创建一个字符串,以便^\s*===\s*(?<Title>\w+?)\s*===\s*$
将限制设置为Session.set('limit', 1)
。当然,可以在Mongo集合请求中处理字符串。
解决方案是使用"1"
。