1

我正在尝试将一个简单的 hello world 存储在 c# 中的 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 与CreatDocument 相同
如果document.Rev!=null,SaveDocument 实际上是“UpdateDocument”。

您的代码属于前一种情况:document.Rev==null

于 2011-06-22T09:45:36.757 回答