javascript - 仅当特定 session / session 不为 false 时, meteor 才允许 Collection.insert

标签 javascript session collections meteor

我得到了那些 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...

更多信息请参见:http://docs.meteor.com/#matchpatterns

关于javascript - 仅当特定 session / session 不为 false 时, meteor 才允许 Collection.insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19405353/

相关文章:

asp.net - 请求卡在 IIS 工作进程中的 RequestAcquireState 中

javascript - console.log 在 CasperJS 的 setTimeout 评估中不起作用

javascript - 创建一个表来容纳多个 JavaScript 函数的输出

javascript - 如何通过调用ajax请求从PHP页面重定向

java - 将 JMS TopicSession 转换为 AQjmsSession 时遇到问题

c# - 从 DateTime 对象集合中解析每月的项目

javascript - 有没有办法在指针事件设置为 none 的元素上触发 JavaScript onclick 事件?

django - 为什么删除 Django 服务器缓存中的 session 记录不会让我注销?

c# - 什么 .NET 集合提供最快的搜索

java - 如何在 Java 中将 List<Integer> 转换为 int[]?