同步网关未与Xamarin中的Couchbase服务器同步

问题描述 投票:0回答:1

我正在尝试在我的xamarin应用程序中将couchbase用于在线和离线数据库。离线部分工作正常,但无法同步。

我遵循了本教程:https://docs.couchbase.com/userprofile-couchbase-mobile/sync/userprofile/xamarin/userprofile_sync.html

我已经安装了ouchbase服务器,创建了一个名为:userprofile的存储桶,并且有一个用户,并且启用了应用程序访问和只读管理员角色。我也安装了同步网关,并且已经配置好了,这是我的配置.json文件

{
"interface":":4984",
"log": ["*"],
"databases": {
"userprofile": {
  "users": { "username": { "password": "password"} },
  "server": "walrus:",
"sync": `
function sync(doc, oldDoc) {
/* Authorization */
           requireUser(doc.email);
/* Data Validation */

if (!isDelete()) {
  validateNotEmpty("email", doc.email);

  if (isCreate()) {

    var expectedDocId = "user" + "::" + doc.email;

    if (expectedDocId != doc._id) {
        throw({forbidden: "user doc Id must be of form user:email"});
  } 
   } else {       

    validateReadOnly("email", doc.email, oldDoc.email);
  }}
/* Routing */
var email = getEmail();

channel("channel." + email);

/* Access Control */
 if (!isDelete()) {
   access(email,"channel." + email)
 }

function getType() {
  return (isDelete() ? oldDoc.type : doc.type);
}

function getEmail() {
  return (isDelete() ? oldDoc.email : doc.email);
}

function isCreate() {
  return ((oldDoc == false) || (oldDoc == null || oldDoc._deleted) && !isDelete());
}

function isUpdate() {
  return (!isCreate() && !isDelete());
}

function isDelete() {
  return (doc._deleted == true);
}

function validateNotEmpty(key, value) {
  if (!value) {
    throw({forbidden: key + " is not provided."});
  }
}

function validateReadOnly(name, value, oldValue) {
  if (value != oldValue) {
    throw({forbidden: name + " is read-only."});
  }
}}`
  }
}
}

并且我使用此命令来配置同步网关:

C:\ Program Files \ Couchbase \ Sync Gateway \ sync_gateway sync-gateway-config-userprofile-walrus.json

而且我将同步URL更改为ws://10.0.2.2:4984,因为我使用的是android emulator。但是设备之间没有同步,有人可以帮我吗?

c# xamarin synchronization couchbase couchbase-sync-gateway
1个回答
0
投票

1]您如何验证同步是否正常(您按照什么步骤进行测试)?如果您按照here的说明进行操作,则无法使用上面的配置。因为您在配置文件中配置的唯一有效用户是具有凭据“用户名”和“密码”的用户,并且教程中的步骤指示了不同的用户名/密码。因此,请确保使用配置文件中的凭据登录到您的应用,然后尝试使用

2)您表示已运行了为Sync Gateway访问配置的Couchbase服务器。但是您的配置文件指示您正在使用“海象”模式(“海象”模式是仅用于开发/测试目的的仅内存模式)。换句话说,在海象模式下,您并没有指向实际的Couchbase服务器。

如果要与后端Couchbase服务器同步(应该同步),则在配置文件的"server"属性中替换“ walrus:”,以指向该Couchbase服务器。

3)进行故障排除的最佳资源是同步网关日志。这应该就同步出了什么问题给出足够的提示。如果上述提示不起作用,请发布您看到的错误]

4)查看此tutorial了解相关背景。可能是这个point

© www.soinside.com 2019 - 2024. All rights reserved.