首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CouchDB连接

CouchDB连接
EN

Stack Overflow用户
提问于 2015-08-03 09:12:36
回答 1查看 1.5K关注 0票数 2

我试图连接到一个CouchDB,但我似乎找不到一个明确的解释它的任何地方。这是我在C#中尝试过的,但是它什么也不做。

代码语言:javascript
复制
using (var db = new MyCouch.Client("http://127.0.0.1:5984/db"))
        {
            var db = "{'_id': '1', '$doctype': 'db', 'name': '1'}";
            var response = db.Documents.Post(db);
            Console.Write(response.GenerateToStringDebugVersion());
        }

有人能解释我如何连接和如何简单地插入数据吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-19 03:54:41

连接到System.Net.Http.HttpClient的简单方法是通过使用CouchDB和侧步执行客户端库本身(尽管有一些好的)。

由于CouchDB API是HTTP,GET、PUT POST和DELETE是您需要的主要方法,下面包含了一个通用方法包装PUT的示例,它使用本机JSON接受POCO模型并将其写入文档(为清楚起见而省略的序列化异常处理)。

代码语言:javascript
复制
    public async Task<R> Put<T, R>(T docObject)
    {  
       string DbName = "demodb";
       string NewDocId = "newDocId";

       // Valid paths, methods and response codes are documented here: http://docs.couchdb.org/en/stable/http-api.html

       using (var httpClient = new HttpClient())
       {
          httpClient.BaseAddress = new Uri("http://server:5984/");
          httpClient.DefaultRequestHeaders.Accept.Clear();
          httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

          // NB: PutAsJsonAsync is an extension method defined in System.Net.Http.Formatting
          var response = await httpClient.PutAsJsonAsync(DbName + "/" + NewDocId, docObject);
          R returnValue;
          if (response.StatusCode == HttpStatusCode.OK)
          {
             returnValue = await response.Content.ReadAsAsync<R>();
          }
          // Check the docs for response codes returned by each method.  
          // Do not forget to check for HttpStatusCode.Conflict (HTTP 409) and respond accordingly.
       }
   }

要完成这个示例,返回类型R应该是从CouchDB返回的JSON响应的属性可以反序列化成。

代码语言:javascript
复制
public class CreateResponse
{
    // use of JsonPropertyAttribute is supported on properties if needed.
    public bool ok { get; set; }
    public string id { get; set; }
    public string rev { get; set; }
    public string error { get; set; }
    public string reason { get; set; }
}

如果使用基本身份验证,则可以在服务器Url前加上凭据,例如:http://user:pass@server/ (如果使用Cookie身份验证)、使用新CookieContainer设置HttpClientHandler并将处理程序传递给HttpClient构造函数。

两份最后说明:

  • 检查提交PUT /db/newid与POST /db之间的差异以创建文档
  • 另外,如果需要在同一个请求上创建多个文档(即在同一个请求上分组新文档以获得多个文档的ACID插入),请查看批量docs。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31783533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档