我在客户端使用PouchDB 6.1.1,在服务器端使用IBM Cloudant。它没有任何问题保存到PouchDB。当我使用myPouch.replicate.to(..)进行复制时,我得到201状态,但响应已禁止错误,带有消息/原因“`source'属性必须存在,并且可以是字符串或对象。”和状态500.可能是导致此错误的原因是什么?
这是我成功提交给PouchDB的文档:
{
_id: "Test2017-01-11T13:47:48-05:00",
completed: false,
created_by: "Joes Moes",
created_on: "2017-01-11T13:47:48-05:00",
durationInSeconds: 1898,
edited: false,
guestVisit: false,
manualVisit: false
}
这是复制到Cloudant后的响应对象。
{
doc_write_failures: 1,
docs_read: 1,
docs_written: 0,
end_time: Wed Jan 11 2017 13:54:38 GMT-0500 (EST),
errors: [{
error: "forbidden",
id: "Test2017-01-11T13:47:48-05:00",
message: "The `source' property must exist and be either a string or an object.",
name: "forbidden",
ok: true,
reason: "The `source' property must exist and be either a string or an object."
}],
rev: "1-fdebae00ecfe324c91e85a88fd823442",
status: 500,
last_seq: 25,
ok: true,
start_time: Wed Jan 11 2017 13:54:37 GMT-0500 (EST),
status: "complete"
}
提前谢谢!
答案 0 :(得分:1)
谢谢大家的答案!我在数据库上发现了这个问题。
在客户端,我使用下面的代码复制到cloudant:
myPouchDB.put(doc);
myPouchDB.replicate.to(myCouchDB);
问题出在数据库本身。不知何故,复制设计文档(_design / _replicator)被添加到该数据库中,这导致了一个问题。删除该文档后,从PouchDB到Cloudant的复制工作正常。
答案 1 :(得分:0)
在我的JSON文档中,CouchDb引用了属性。我注意到它们不在你的文件中。也许你可以试试这个:
{
"_id": "Test2017-01-11T13:47:48-05:00",
"completed": false,
"created_by": "Joes Moes",
"created_on": "2017-01-11T13:47:48-05:00",
"durationInSeconds": 1898,
"edited": false,
"guestVisit": false,
"manualVisit": false
}
代替?