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

3

我正在使用Meteor的“methods”来在客户端和服务器之间传输数据。有没有推荐的验证数据的模式?我看到像这样在服务器上使用过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个回答

5

1
客户端验证要求在不使用自动表单时出现。如果从 UI 传递了错误的值,则 Simpleschema 会在服务器端生成错误。
如果您想在不使用自动表单的情况下保持无验证的客户端,则可以使用 check 功能来检查从 UI 发送的数据。当任何检查失败时,在异步的 .Meteor.call 中捕获,并使用 bootstrap 和 jquery 在 UI 上显示用户友好的消息。
否则,使用普通的 JavaScript 和 gquery 来满足您的需求。当应用程序在服务器上运行时,此过程非常繁琐。只是为了更改简单的验证或条件,就必须构建和压缩整个代码以适合服务器生产就绪的代码。但是,如果您使用 simpleschema 和 autoforms,则只需更改 app.js 文件并重新启动应用程序(可能使用 pm2),您的应用程序将正常工作。

你认为使用自动表单更好吗? - TheRealJimShady
Autoform和QuickForms都有其自身的限制。当您需要在表单上进行简单的CRUD操作时,它们是首选。但在大多数情况下,将其包含在应用程序中是很好的选择。请仔细研究这些软件包提供的功能边界,并检查是否符合您的需求。 - Ankur Soni
请接受任何回答并关闭循环。 - Ankur Soni

0
我还想补充一点,在Meteor中服务器和客户端之间的通信是通过“发布”(服务器端)和“订阅”(客户端)到某些发布来完成的。
据我所知,Meteor中的方法仅用于CRUD操作,例如它们可以从客户端远程调用。

非常感谢你提出这个问题 - 我已经了解了Meteor的发布/订阅模型,我猜我选择了方法,因为它们更加熟悉...关于使用两者之一的准则有哪些? - TheRealJimShady
看起来这个问题已经有答案了 https://dev59.com/iY3da4cB1Zd3GeqPyVML#31590228 - TheRealJimShady

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接