我在使用 Simperium 时遇到问题。
这个小 plnkr允许一个用户在我的应用程序上创建一个帐户,并对其进行身份验证。
进行身份验证后,您可以使用名称:值对修改存储桶object_to_update
中的对象mydata_data
(按更新按钮即可!)。
问题是我总是object_to_update
在更新对象时执行存储桶的本地回调。我不明白为什么。更新在本地触发(我在此页面上没有其他远程操作),但即使在本地触发它也总是会触发本地回调。
文档local
说:
每当库需要在向您发送通知事件之前检查对象的当前本地状态时,就会触发此回调。这样任何本地更改都可以合并到更新的对象中。在上面的示例中,您可能正在同步来自名为“mytextfield”的 HTML 元素的文本输入。如果有可用的更新(此对象已在其他地方更改),库将期望获取对象的当前状态,以便将本地更改与远程更改合并。当您收到通知事件时,您可以直接更新“mytextfield”。
但是更新不是在其他地方触发的,我是在本地触发的!
我看到更新按预期成功的唯一方法是复制更新代码:
bucket.update ("object_to_update", {on: va});
在本地回调中,具有完全相同的on
和va
值,但是首先复制它有什么意义呢?必须有另一种解释。