Meteor 流星:什么时候这个.ismulation比流星.isClient更有用?
此模拟的定义:Meteor 流星:什么时候这个.ismulation比流星.isClient更有用?,meteor,Meteor,此模拟的定义: Access inside a method invocation. Boolean value, true if this invocation is a stub. Meteor.isClient的定义: Boolean variable. True if running in client environment. 在什么情况下,这种模拟有用?为什么我不能一直使用Meteor.isClient 我正在使用Meteor.isClient检查客户端文档是否使用以下简单架构属
Access inside a method invocation. Boolean value, true if this invocation is a stub.
Meteor.isClient的定义:
Boolean variable. True if running in client environment.
在什么情况下,这种模拟有用?为什么我不能一直使用Meteor.isClient
我正在使用Meteor.isClient检查客户端文档是否使用以下简单架构属性与服务器同步:
unsynced: {
type: Boolean,
autoValue: function () {
return Meteor.isClient;
}
}
它似乎起作用了,但其他人说使用这个。I模拟,除了在这里这样做对我不起作用之外。我接受斯拉瓦的评论并将其转化为答案;) 其思想是,
isSimulation
可以在服务器或客户端的任何位置实现。它仅在方法
上下文中有用。正如Slava所说,当一台服务器充当另一台服务器的客户端时,可以使用模拟
isClient
可用于所有类型的代码,而不仅仅是方法内部的代码。它防止代码在可能引发错误的环境中执行(例如在服务器上使用会话
)
对于延迟补偿,您通常在客户端和服务器上运行相同的方法,但是如果您将数据插入数据库,客户端显然只能模拟这种情况。因此,有时确定仿真是否正在运行或数据库是否已实际更改是有帮助的
在您的情况下,您可能需要调整方法,以检查服务器是否保存了更健壮的文档。为此,我将在方法中添加一个isServer
块,以便在客户端更改数据时将标志synced
设置为true
,并将其设置为false
。理想情况下,将其与成功的更新/升级相结合。例如,当您有一个服务器到服务器的DDP时,您仍然可以在其中一个服务器上进行方法模拟。