将文档添加到CouchDB时出错

时间:2018-02-14 10:57:07

标签: json couchdb schema pouchdb

我的本​​地PouchDB文档不会复制到我的远程CouchDB。

正在进行同步,因为浏览器下载了我的设计架构,因此它不是权限问题。我认为我的设计架构与我的文档不匹配,但我很难找到编写架构的正确方法。

模式

{
  "_id": "_design/schema",
  "_rev": "4-3d9a49ebffbbd6b7b146240879baa7e4",
  "validate_doc_update": "function(newDoc, oldDoc, userCtx, secObj){ if(userCtx.roles[0] !== 'admin'){throw({forbidden: 'operation forbidden'})} }",
  "views": {
    "by_module": {
      "map": "function(doc){ if(doc.type == 'note'){emit(doc.note);} }"
    }
  },
  "schema": {
    "title": "Contact details",
    "description": "A document containing a person's contact details.",
    "type": "object",
    "required": [
      "name",
      "level"
    ],
    "properties": {
      "_id": {
        "type": "string"
      },
      "_rev": {
        "type": "string"
      },
      "application_access": {
        "type": "string"
      },
      "home": {
        "type": "string"
      },
      "home_email": {
        "type": "string"
      },
      "jobtitle": {
        "type": "string"
      },
      "level": {
        "type": "string"
      },
      "mobile1": {
        "type": "string"
      },
      "mobile2": {
        "type": "string"
      },
      "modified": {
        "type": "number"
      },
      "name": {
        "type": "string"
      },
      "work": {
        "type": "string"
      },
      "work_email": {
        "type": "string"
      },
      "_doc_id_rev": {
        "type": "string"
      }
    }
  }
}

文档

{
  "_id": "fcb52b3072e2038647b328c0a700147f",
  "_rev": "1518449239461",
  "application_access": "User",
  "home": "",
  "home_email": "",
  "jobtitle": "Exemplar",
  "level":  "Bronze",
  "mobile1": "0987654321",
  "mobile2": "",
  "modified": 1518449239461,
  "name": "Zachary Zumbeispiel",
  "work": "",
  "work_email": "",
  "_doc_id_rev": "1518449239460::1-ffd3c056614845ada4a68de4793710ac"
}

所以问题是,我的doc是否符合我的架构?或者我的架构错了吗?

“架构”在CouchDB实例上,文档在PouchDB中。

1 个答案:

答案 0 :(得分:0)

他们现在正在复制,因为我删除了“文档架构”,因此它可以同步和复制。

所以问题是我读过一些我需要向CouchDB添加模式的地方,所以我创建了我认为是模式的模型,显然要同步的文档的结构必须相同,所以同步不起作用,因为文档的结构不匹配。

因此@Flimzy解释说模式的整个概念都是线轴意味着我删除了“模式”,瞧,PouchDB和CouchDB现在可以同步 - 并解决了问题。