Cloudant错误:“`source'属性必须存在,并且可以是字符串或对象。”

时间:2017-01-11 19:31:07

标签: pouchdb cloudant

我在客户端使用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"
}

提前谢谢!

2 个答案:

答案 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 
}

代替?