所以我使用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);
......这是有道理的,是否有类似我应该在客户端使用以验证表单的东西?任何额外的信息也将受到赞赏。
答案 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操作,可以从客户端远程调用它们。