Javascript Meteor.js验证,带中间层

Javascript Meteor.js验证,带中间层,javascript,validation,meteor,mesosphere,Javascript,Validation,Meteor,Mesosphere,我正在尝试在我的meteor应用程序中实现验证,但似乎Mesosphere没有接受我列出的一些本地验证 我只尝试了一次电子邮件格式验证,它的长度是必需的。例如: Mesosphere({ name: 'signupForm', method: 'signupUser', fields: { email: { required: true, format: 'email', rules:

我正在尝试在我的meteor应用程序中实现验证,但似乎Mesosphere没有接受我列出的一些本地验证

我只尝试了一次电子邮件格式验证,它的长度是必需的。例如:

Mesosphere({
    name: 'signupForm',
    method: 'signupUser',
    fields: {
        email: {
            required: true,
            format: 'email',
            rules: {
                exactLength: 4
            },
            message: 'Wrong length'
        }
    },
    onFailure: function (errors) {
        messages = [];

        messages = _.map(errors, function (val, err) {
            console.log(val.message);
        });
    },
    onSuccess: function (data) {
        alert("Totally worked!")
    }
});
var validationObject = Mesosphere.signupForm.validate(accountData);
“onFailure”(和onSuccess)回调似乎起作用,因为它在我提交表单时记录了一些东西。这让我相信我已经在表单提交事件上正确设置了它。在这里,如果我理解正确,您可以将form对象传递给Mesosphere来创建validationObject。例如:

Mesosphere({
    name: 'signupForm',
    method: 'signupUser',
    fields: {
        email: {
            required: true,
            format: 'email',
            rules: {
                exactLength: 4
            },
            message: 'Wrong length'
        }
    },
    onFailure: function (errors) {
        messages = [];

        messages = _.map(errors, function (val, err) {
            console.log(val.message);
        });
    },
    onSuccess: function (data) {
        alert("Totally worked!")
    }
});
var validationObject = Mesosphere.signupForm.validate(accountData);
一旦提交,它的日志字段作为错误是必需的,这很奇怪,因为我确实在字段中键入了一些内容。它没有提到错误的长度或格式。它跳过了“错误长度”消息,我在对象的任何地方都找不到该消息

所以我的问题是,对于表单字段的不正确输入,我没有得到正确的消息,这是做错了什么?谢谢:)

此外,愿意接受其他验证包的建议。Mesosphere利用Meteor的服务器/客户端功能进行验证,因此它似乎是一个好的起点

模板:

<template name="signup">
      <form name="signupForm" id="signup-form" class="panel" action="#">
        <div class="form-group">
          <label for="email">Email</label>
          <input type="text" name="email" id="email" class="form-control" />
        </div>

        <div class="form-group">
          <label for="password">Password</label>
          <input type="password" name="password" id="password" class="form-control" />
        </div>

        <div class="form-group">
          <input type="submit" value="Sign Up" id="create-account" class="btn btn-success pull-right">
        </div>
      </form> </template>

所以基本上我在这里看到的是,您的规则没有反映表单将如何被验证。您有一封电子邮件必须与电子邮件格式匹配,但您有一条规则规定它必须正好是4个字符长。。更好的字段定义如下所示:

fields: {
    email: {
        required: true,
        format: 'email',
        message: 'Please enter a valid email address'
    },
    password: {
        required: true,
        rules: {
            minLength: 6,
            maxLength: 30,
        },
        message: "Password must be between 6 and 30 characters"
    }
}
我创建了一个github repo,如果您愿意,可以克隆并运行它来测试它


希望这有帮助。

您能将模板html添加到您的问题中吗?添加了模板和相应的方法。谢谢David。我花了大约20分钟的时间从包中的示例中倒转过来,但我没有弄明白。它已经5个月没有更新了,所以这是一个危险信号。你可能想看看。我还没有尝试过,因为我们编写了自己的验证库(还没有公开)。谢谢你的推荐,大卫,谢谢你给它一个去/中间层。很高兴我不是唯一一个在这方面有问题的人。