Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
Methods 流星数据库变异器如何知道它';是从Meteor.method调用的还是从普通代码调用的?_Methods_Meteor_Rpc - Fatal编程技术网

Methods 流星数据库变异器如何知道它';是从Meteor.method调用的还是从普通代码调用的?

Methods 流星数据库变异器如何知道它';是从Meteor.method调用的还是从普通代码调用的?,methods,meteor,rpc,Methods,Meteor,Rpc,如果有人对客户做了类似的事情 Foo.insert({blah : 1}) 如果Foo是Meteor集合,这实际上会触发Meteor.method调用,如最后一段所述,该调用在客户端和服务器上执行代码 但是,假设我定义了一个方法(在客户端和服务器上),该方法执行相同的操作: Meteor.methods({ bar: function() { Foo.insert({blah : 1}) } }); 现在,我用 Meteor.call("bar"); 由于该方法,现在将

如果有人对客户做了类似的事情

Foo.insert({blah : 1})
如果
Foo
是Meteor集合,这实际上会触发Meteor.method调用,如最后一段所述,该调用在客户端和服务器上执行代码

但是,假设我定义了一个方法(在客户端和服务器上),该方法执行相同的操作:

Meteor.methods({
  bar: function() { 
    Foo.insert({blah : 1}) 
  }
});
现在,我用

Meteor.call("bar");
由于该方法,现在将在客户端和服务器上调用
Foo.insert
。但是,既然服务器本身就是一个方法,那么客户端调用
insert
如何知道不要再次调用服务器呢


此外,是否有一种方法可以在客户端上调用
insert
,而不自动触发规范的服务器端延迟补偿调用并产生同步?(有关我为什么要这样做,请参见)

客户端1将成为“存根”。它具有此
isSimulation
属性集,使其显示为插入数据以进行延迟补偿

我认为,如果在客户机上运行
.method
,则延迟补偿始终处于启用状态,不应输入数据库。因此,在客户端方法上运行的任何东西都将是“伪”类型的模拟

如果尝试将
this.isSimulation
设置为
false
,则会出现一些奇怪的错误,表明客户端插入开始抛出插入错误

我不太确定如何在错误的模拟中运行它。我认为您必须在其他方法中运行它
var dothis=function(){…}
type方法

要执行此“假火”&忘记并仅使用客户端数据,这是我的假设(如果我错了,请更正,以便我更改答案),请修改客户端方法中的
\u collection
属性

e、 g如果你有

mydata = new Meteor.Collection("something");

function something() {
    mydata.insert({..});
}
改为修改方法以执行此操作

mydata._collection.insert({..});
这将确保数据未同步到服务器,但本地集合将具有此“假数据”

希望这有帮助