我从 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/