1

c# で単純な hello world を couchdb データベース (まったくの初心者) に保存しようとしています。

私は LoveSeat を使用しています (ただし、それが役立つ場合は別のクライアントを提案してください)、次の簡単なコードを作成しました。

static void Main(string[] args)
{
    var cl = new CouchClient("myserver", 5984, null, null);

    var db = cl.GetDatabase("mydb");

    var newDoc = db.CreateDocument(@"{
""Test"":""ValueTest""
}"
    );

    var newDoc2 = db.SaveDocument(newDoc);
}

ドキュメントは実際に作成されます:

{
   "_id": "805656b6113d30a5387230a669000bb6",
   "_rev": "1-44c5768a2fa004c6a43899687c283517",
   "Test": "ValueTest"
}

しかし、結果の newDoc2 を見ると、次のように表示されます。

{
  "error": "file_exists",
  "reason": "The database could not be created, the file already exists."
}

私は何か間違ったことをしましたか?

どうも

4

2 に答える 2

1

CreateDocumentは、実際に新しいドキュメントをcouchdbに追加するものです。その後、SaveDocumentを呼び出す必要はありません。SaveDocumentは、ドキュメントに変更を加えた後、ドキュメントを更新するために使用されます。よくわかりませんが、更新されていないドキュメントでSaveDocumentを呼び出すと、このエラーが発生するようです。ドキュメントに変更を加えてからSaveDocumentを呼び出すと、正常に機能することが期待されます。

于 2011-05-11T14:35:23.417 に答える
1

LoveSeatのソースコードを読みました:

public Document SaveDocument(Document document)
{
    if (document.Rev == null)
        return CreateDocument(document);

    var resp = GetRequest(databaseBaseUri + "/" + document.Id + "?rev=" + document.Rev).Put().Form().Data(document).GetResponse();
    var jobj = resp.GetJObject();
    //TODO: Change this so it simply alters the revision on the document past in so that there isn't an additional request.
    return GetDocument(document.Id);
}

の場合document.Rev==null、SaveDocument は CreateDocument と同じです。
場合document.Rev!=null、SaveDocument は実際には「UpdateDocument」です。

あなたのコードは前者のケースに属します:document.Rev==null

于 2011-06-22T09:45:36.757 に答える