ios - 当文档从后端更改时如何触发 Couchbase 与 iOS 同步

标签 ios iphone node.js swift couchbase

我从 https://github.com/couchbaselabs/Grocery-Sync-iOS 克隆了一个项目。我已经在 Couchbase 管理中创建了 grocery-sync 存储桶。我使用 iPhone 模拟器添加了几个文档,它起作用了,因为这些文档确实出现在数据库中。但是,当我尝试更改文档的标题时,iOS 不会更新已更改文档的新标题。我尝试使用提供的 node.js 模块来更改此文档。下面是用于更改特定文档文本的node.js 代码。

var couchbase = require("couchbase");

// Connect to Couchbase Server

var cluster = new couchbase.Cluster('127.0.0.1');
var bucket = cluster.openBucket('grocery-sync', function(err) {
  if (err) {
    // Failed to make a connection to the Couchbase cluster.
    throw err;
  }

  bucket.get('-v-bZh-EUrlr0_ev-rqC8br', function(err, result) {
    if (err) {
      // Failed to retrieve key
      throw err;
    }

    console.log(doc);

    var doc = result.value;

    // Store a document

    doc.text = "Random beer from Norway";

    bucket.replace('-v-bZh-EUrlr0_ev-rqC8br', doc, function(err, result) {
      if (err) {
        // Failed to replace key
        throw err;
      }

      console.log(result);

      // Success!
      process.exit(0);
    });
  });
});

node.js 代码确实有效,因为我可以看到数据库中的更改。但 iOS 应用程序没有更新任何更改。 kCBLReplicationChangeNotification 永远不会被调用。我尝试重新运行模拟器,该值仍然是旧值。那么当你更改现有文档时如何更新更改并使iOS更新它的新值呢?看来同步功能只能单向工作。

最佳答案

如果您希望将更改复制到 Couchbase Lite 实例,则必须通过同步网关。您不能直接在关联的存储桶中写入。

因此,推荐的方法是使用 Sync Gateway 的 REST API .

关于ios - 当文档从后端更改时如何触发 Couchbase 与 iOS 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34649855/

相关文章:

ios - 在 iOS 7 中强制横屏和自动旋转

iphone - 为什么我不能更改 UIButton 上的标签?

iphone - 如何在 iPhone/iPad 中制作组合框?

javascript - 删除 object.property 不适用于 Mongoose 创建的对象

javascript - Discord.js - 显示已删除消息的作者及其已删除消息的数量

ios - 读取 NSUserDefaults 与变量的速度

ios - 如何在 SwiftUI 中使用 DatePicker 创建警报

iphone - 如何向用户显示我的App当前的项目版本?

ios - cocoapods 集成后无法在设备中安装 IPA

javascript - 使用哈巴狗 each 循环遍历对象数组