我得到了那些 session :
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);
我希望用户仅在所有 session 的值不为 false 并且该值有效时才能够插入, 例如组名称不能是“123”或“a”(我知道我可以使用正则表达式来做到这一点,但我更喜欢使用 meteor 检查和匹配来做到这一点)。
正在做:
if(Session.get("group_date") != false && Session.get("group_friends") != false && ...){
CollectionName.insert({name:Session.get("group_name")},...)
}
看起来乏味且错误。
最佳答案
为什么不只创建一个 session 变量而不是 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")},...)
}
显然,如果您需要应用比简单检查值是否不为假更复杂的验证,那么您必须在每个数据字段的基础上执行此操作,绝对没有其他方法。例如:
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...
关于javascript - 仅当特定 session / session 不为 false 时, meteor 才允许 Collection.insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19405353/