Javascript Meteor安全性:所有数据库插入、更新、删除操作都应该是服务器的Meteor.call()吗?
通过Javascript Meteor安全性:所有数据库插入、更新、删除操作都应该是服务器的Meteor.call()吗?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,通过Meteor.call()调用服务器方法,在服务器端执行任何涉及插入、更新和删除文档的数据库操作,是否会对性能造成影响 或者有更好的方法,或者也可以让客户机自己完成所有这些操作,然后将更改发送到服务器并广播给所有其他客户机 我的场景涉及以下内容:我想要一个反应式数据表,当某人(登录到另一个帐户)或他自己添加新行、更新行或删除行时,该表会自动反映。我创建了一个无限滚动页面,但问题是当我进入详细信息页面(单击一行)并返回时,我失去了原来的位置,我必须向下滚动鼠标滚轮以便加载其他文档。对于第一点,
Meteor.call()
调用服务器方法,在服务器端执行任何涉及插入、更新和删除文档的数据库操作,是否会对性能造成影响
或者有更好的方法,或者也可以让客户机自己完成所有这些操作,然后将更改发送到服务器并广播给所有其他客户机
我的场景涉及以下内容:我想要一个反应式数据表,当某人(登录到另一个帐户)或他自己添加新行、更新行或删除行时,该表会自动反映。我创建了一个无限滚动页面,但问题是当我进入详细信息页面(单击一行)并返回时,我失去了原来的位置,我必须向下滚动鼠标滚轮以便加载其他文档。对于第一点,您可以选择两种可能性中的任何一种,但我更喜欢使用第二种:
- 客户端可以执行插入/更新/删除操作
- 服务器有一些安全检查
对于第二点,您可以想象,当您单击详细信息时,您将存储在列表中的会话中。然后,当您返回列表时,检查会话值,您只需使用它来恢复状态。您可以同时执行这两项操作。这是Meteor的共享客户机/服务器代码非常有用的领域之一。基本上,使用Meteor.call执行所有操作,并将调用方法存储在共享文件夹中。这样,您就可以获得由服务器处理的所有好处,并且仍然可以使用延迟补偿。您可以始终使用,这将允许您在Meteor方法中运行特定于客户端或服务器的代码。我不确定是否完全理解第二部分。你的意思是使用会话使其成为被动的吗?我已经在做了。是的,就是这样。如果你使用它,它应该会工作。但是您必须使用路由器包来管理应用程序的历史记录和路由。