Meteor:什么时候 this.isSimulation 比 Meteor.isClient 更有用?

标签 meteor

this.isSimulation 的定义:

Access inside a method invocation. Boolean value, true if this invocation is a stub.

Meteor.isClient 的定义:
Boolean variable. True if running in client environment.

this.isSimulation 在什么情况下会有用?为什么我不能总是只使用 Meteor.isClient?

我正在使用 Meteor.isClient 检查客户端文档是否使用这个简单模式属性与服务器同步:
unsynced: {
  type: Boolean,
  autoValue: function () {
    return Meteor.isClient;
  }
}

它似乎有效,但其他人说使用 this.isSimulation,除了在这里做对我不起作用。

最佳答案

我正在接受 Slava 的评论并将其转化为答案;)
这个想法是isSimulation在服务器或客户端上的任何地方都可能成为真。它仅在 Method 内部有用语境。正如 Slava 所说,当一台服务器充当另一台服务器的客户端时,可以使用模拟。
isClient可以用于各种代码,不仅仅是内部Method .它可以防止代码在可能抛出错误的环境中执行(例如在服务器上使用 Session)。

对于延迟补偿,您经常在客户端和服务器上运行相同的方法,但如果您将数据插入数据库,显然客户端只能模拟这一点。因此,有时有助于确定模拟是否正在运行或数据库是否实际更改。

在您的情况下,您可能需要调整方法以检查服务器是否保存了文档以使其更健壮。为此,我会添加一个 isServer阻止进入设置标志的方法 syncedtrue并将其设置为 false每当客户端更改数据时。理想情况下,将它与成功的更新/upsert 结合起来。

关于Meteor:什么时候 this.isSimulation 比 Meteor.isClient 更有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26380250/

相关文章:

ios - Meteor/Cordova/Phonegap iOS 应用程序在部署到生产环境时无法正常工作

node.js - 在 Windows 7 中向 meteor 应用程序添加包时出现“node-gyp rebuild”安装错误

javascript - 获取mongoDB模型树结构中的所有父文档

javascript - 如何使用 meteor 自动更新传单 map 上的标记

node.js - 用于获取订单的 eBay Fulfillment API

node.js - 我应该在/usr/lib 还是/usr/local 中安装 Meteor 的 npm 模块?

javascript - 如何在 Meteor 中添加换行符?

javascript - Angular Meteor 应用程序在本地主机中运行,但在部署到服务器时失败

meteor - meteor.js Web 框架能否有效支持社交网络架构?

javascript - JWPLAYER:加载播放器时出错:找不到可播放的源(Meteor)