Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor安全性:所有数据库插入、更新、删除操作都应该是服务器的Meteor.call()吗?_Javascript_Mongodb_Meteor - Fatal编程技术网

Javascript Meteor安全性:所有数据库插入、更新、删除操作都应该是服务器的Meteor.call()吗?

Javascript Meteor安全性:所有数据库插入、更新、删除操作都应该是服务器的Meteor.call()吗?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,通过Meteor.call()调用服务器方法,在服务器端执行任何涉及插入、更新和删除文档的数据库操作,是否会对性能造成影响 或者有更好的方法,或者也可以让客户机自己完成所有这些操作,然后将更改发送到服务器并广播给所有其他客户机 我的场景涉及以下内容:我想要一个反应式数据表,当某人(登录到另一个帐户)或他自己添加新行、更新行或删除行时,该表会自动反映。我创建了一个无限滚动页面,但问题是当我进入详细信息页面(单击一行)并返回时,我失去了原来的位置,我必须向下滚动鼠标滚轮以便加载其他文档。对于第一点,

通过
Meteor.call()
调用服务器方法,在服务器端执行任何涉及插入、更新和删除文档的数据库操作,是否会对性能造成影响

或者有更好的方法,或者也可以让客户机自己完成所有这些操作,然后将更改发送到服务器并广播给所有其他客户机


我的场景涉及以下内容:我想要一个反应式数据表,当某人(登录到另一个帐户)或他自己添加新行、更新行或删除行时,该表会自动反映。我创建了一个无限滚动页面,但问题是当我进入详细信息页面(单击一行)并返回时,我失去了原来的位置,我必须向下滚动鼠标滚轮以便加载其他文档。

对于第一点,您可以选择两种可能性中的任何一种,但我更喜欢使用第二种:

  • 客户端可以执行插入/更新/删除操作
  • 服务器有一些安全检查
在这个系统中,您使用meteor的延迟补偿。因此,这似乎是一种很好的做法


对于第二点,您可以想象,当您单击详细信息时,您将存储在列表中的会话中。然后,当您返回列表时,检查会话值,您只需使用它来恢复状态。

您可以同时执行这两项操作。这是Meteor的共享客户机/服务器代码非常有用的领域之一。基本上,使用Meteor.call执行所有操作,并将调用方法存储在共享文件夹中。这样,您就可以获得由服务器处理的所有好处,并且仍然可以使用延迟补偿。您可以始终使用,这将允许您在Meteor方法中运行特定于客户端或服务器的代码。

我不确定是否完全理解第二部分。你的意思是使用会话使其成为被动的吗?我已经在做了。是的,就是这样。如果你使用它,它应该会工作。但是您必须使用路由器包来管理应用程序的历史记录和路由。