我收到了那些会议:
Session.set("group_name",false);
Session.set("group_date",false);
Session.set("group_friends",false);
Session.set("group_location",false);
Session.set("group_rules",false);
Session.set("group_desc",false);
Session.set("group_save",false);
我希望用户只有在所有Sessions的值都不为false并且该值有效时才能插入 例如,组名不能是“123”或“a”(我知道我可以使用regexp来做,但我更喜欢使用流星检查和匹配)。
做的:
if(Session.get("group_date") != false && Session.get("group_friends") != false && ...){
CollectionName.insert({name:Session.get("group_name")},...)
}
看起来很单调乏味。
答案 0 :(得分:2)
为什么不创建一个Session var而不是7:
Session.set("group", {
name: false,
date: false
//etc...
})
然后,如果您需要更新其中任何一个:
var group = Session.get("group");
group.name = "Bob";
Session.set("group", group);
现在在你的方法中你可以使用for(key in Session.get("group"))
迭代属性,或者只使用Meteor内置的Underscore:
var group = Session.get("group");
if(_.all(group, function(val) { return !!val; }){ //checks that all properties of group are not false
CollectionName.insert({name:Session.get("group_name")},...)
}
显然,如果你需要应用更复杂的验证,而不仅仅是检查值是否为false,那么你必须在每个数据域的基础上进行,绝对没有别的办法。 E.g:
var group = Session.get("group");
check(group, validateGroup);
CollectionName.insert({name:Session.get("group_name")},...)
function validateGroup(group){
check(group, {
name: String,
date: Date
//etc.
}
if(group.name.length < 3 || group.name == "whatever else you need to compare it to"){
return false;
}
//further validation...
有关此内容的更多信息:http://docs.meteor.com/#matchpatterns