gpt4 book ai didi

javascript - 从 Meteor 服务器端方法访问集合

转载 作者:行者123 更新时间:2023-12-03 12:18:54 25 4
gpt4 key购买 nike

服务器端方法也受出版物管辖吗?我认为服务器端方法可以修改任何它想要的内容。

就我而言,在 template 的帮助程序中,我有 Meteor.call('serverMethod', id) ,然后定义 serverMethodcollections/methods.js中。

通过发布,template 只能访问一条记录(id 一条),但这是 serverMethod 看到的唯一一条记录。

但是当我将所有内容发布到 template 时,serverMethod 会看到所有内容。

这不是很奇怪吗?我认为服务器方法的目的是值得信任,以便我可以修改我需要的任何内容,而无需发布整个数据库?我有什么遗漏的吗?

我的allow权限设置得很好,与应用程序的其他部分一样,可以正常工作。

最佳答案

您最初的假设是正确的 - 服务器上的方法是“受信任的代码”,因此可以完全访问您的集合(发布和拒绝规则不适用)。

我认为令人困惑的是 serverMethod 是在共享目录中定义的,因此将在客户端和服务器上运行(除非它用 Meteor.isServer 包装) )。因此,如果在客户端发起调用,它将运行两个版本。根据该方法的实际用途以及调用方式,您可能只会看到客户端调用的结果。方法的客户端版本已发布到客户端的内容的限制。

我怀疑你的助手内部正在做类似的事情:

var result = Meteor.call('serverMethod', id);

这表示:“调用serverMethod的客户端模拟并立即返回结果”。为了实际从服务器获取值,您需要使用回调。例如:

Meteor.call('serverMethod', id, function (error, result) { console.log(result); } );

如果上述信息准确地描述了问题,那么您现在需要处理另一个问题:您不能在模板助手内部使用异步回调的值。请参阅this question了解更多信息。

关于javascript - 从 Meteor 服务器端方法访问集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com