Meteor JS中的客户端和服务器端验证

时间:2017-08-19 17:11:44

标签: javascript validation meteor

所以我使用Meteor的方法'在客户端和服务器之间传输数据。是否有推荐的验证数据模式?我在服务器上看到SimpleSchema就像这样

Lists.schema = new SimpleSchema({
  name: {type: String},
  incompleteCount: {type: Number, defaultValue: 0},
  userId: {type: String, regEx: SimpleSchema.RegEx.Id, optional: true}
});

...

const list = {
  name: 'My list',
  incompleteCount: 3
};
Lists.schema.validate(list);

......这是有道理的,是否有类似我应该在客户端使用以验证表单的东西?任何额外的信息也将受到赞赏。

3 个答案:

答案 0 :(得分:4)

使用Meteor验证的方法包时,可以使用simple-schema验证方法中的参数。

https://github.com/meteor/validated-method

这样做的一个优点是您可以在方法模拟中验证客户端上的args,这样如果出现错误,该方法在进入服务器之前就会被拒绝。

您还可以使用Meteor的check包(https://docs.meteor.com/api/check.html)作为验证的一部分。

在验证表单方面,有许多解决方案。一个例子是jQuery validation

答案 1 :(得分:1)

当您不使用autoforms时,会出现客户端验证要求。如果从UI传递了错误的值,那么Simpleschema会在服务器端生成错误。

如果您希望在不使用autoform的情况下不在客户端进行验证,则可以使用check功能检查从UI发送的数据。当任何检查失败时,捕获异步。Meteor.call并使用bootstrap和jquery,您可以在UI上显示用户友好的消息。

或者使用普通的JavaScript和gquery来满足您的需求。当应用程序在服务器上运行时,此过程非常繁琐。只是为了改变简单的验证或条件,整个代码必须构建和缩小以适应服务器生产就绪代码。但是如果你使用simpleschema和autoforms,你将不得不更改app.js文件并重新启动应用程序(可能正在使用pm2),你的应用程序将正常工作。

答案 2 :(得分:0)

我还要补充说,Meteor中服务器和客户端之间的通信是通过"出版物" (服务器端)和"订阅" (客户方)某些出版物。

据我了解,Meteor中的方法仅适用于CRUD操作,可以从客户端远程调用它们。