2017-01-11 12 views
1

私は、クライアント側でPouchDB 6.1.1を使用し、サーバー側でIBM Cloudantを使用しています。 PouchDBに保存しても問題ありません。 myPouch.replicate.to(..)を使用して複製すると、201のステータスが返されますが、メッセージ/理由で応答が禁止されています。 "ソースのプロパティが存在し、文字列またはオブジェクトでなければなりません。このエラーが発生した理由は何ですか?Cloudant Error: "ソースのプロパティが存在し、文字列またはオブジェクトである必要があります。"

これは私が成功し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

レプリケーションはどのように構成されていますか?レプリケーションコードを投稿してください。 – RamblinRose

答えて

0

JSoftの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 
} 

代わりに?

1

ありがとうございました!データベース上で問題が見つかりました。

私はcloudantに複製するために以下のコードを使用したクライアント側で

myPouchDB.put(doc); 
myPouchDB.replicate.to(myCouchDB); 

問題はデータベース自体にありました。どういうわけか、問題を引き起こしていたデータベースに複製設計ドキュメント(_design/_replicator)が追加されました。その文書を削除した後、PouchDBからCloudantへの複製が機能しました。

関連する問題