【问题标题】:How to write to CouchDB using Javascript?如何使用 Javascript 写入 CouchDB?
【发布时间】:2013-03-25 13:08:12
【问题描述】:

我看到了couplesuch 问题并阅读了我可以find 的教程。不幸的是,他们都认为我对一些我实际上没有的知识有所了解,我什至不知道我不知道的关键词。

我有一个 HTML 页面,其中包含一些 javascript。我可以将信息放在字符串或 javascript 对象中。现在,我如何将它发送到我的数据库?我如何指出我的数据库在哪里以及 javascript 如何授权给数据库以便它可以写入?

大部分教程只展示了 CouchDB 如何与 curl 一起工作,我还没有看到让网站与数据库交互的教程。这不正是 CouchDB 的本意吗?

【问题讨论】:

  • 你使用的是node.js还是非JS后端?
  • @sarwar,全新安装的 CouchDB 是我目前拥有的所有后端。
  • 由于您只使用 JS 和 html,我倾向于 jquery.couch.js。我询问了后端,因为如果你有一个基于 python 的服务器,python couchdb 界面非常简单直观。

标签: javascript jquery rest couchdb


【解决方案1】:

从 JavaScript(使用 jQuery)发送 REST 请求与使用 curl 执行的操作非常相似:

function create() {
  var o = {"name":"Bond"};
  $.ajax({
   type: "POST",
   url: "/myDB/",
   contentType: "application/json",
   data: JSON.stringify(o),
   dataType: "json",
   success: function(data) {
     alert(data.id + " created !");
   }
  });
}

但请注意:如果请求不是从与 CouchDB 相同的服务中检索到的,则出于安全原因,该请求将被阻止。因此,请将您的 HTML 页面作为设计文档的附件。

稍后您将学习如何在“节目”或“列表”中使用此类脚本。但让我们从简单的事情开始吧。

【讨论】:

    【解决方案2】:

    只是因为我也很难找到一个明确的答案,所以这里是如何在 vanilla JS 中做到这一点:

    const URL = "http://127.0.0.1:5984"
    
    function createDB(dbName) {
        var req = new XMLHttpRequest();
        req.open("PUT", URL + "/" + dbName, true);
        req.setRequestHeader("Content-type", "application/json");
    
        req.send();
    }
    
    function updateDB(dbName, docName, data) {
        var req = new XMLHttpRequest();
        req.open("PUT", URL + '/' + dbName + '/' + docName, true);
        req.setRequestHeader("Content-type", "application/json");
    
        req.send(JSON.stringify(data));
    }
    

    所以你会像这样使用它们:

    createDB('baseball');
    updateDB('baseball', 'document', {"pitcher":"Nolan Ryan"});
    

    注意:我不打算在这里讨论修订号和冲突解决方案,只是提供一些非常基本的代码。第二次尝试更新同一条记录时,除非您提供正确的修订号,否则将会发生冲突,仅供参考。

    updateDB('baseball', 'document', {"_rev":"1-7e007b1ef348cba88396435479822386", "pitcher":"Roger Clemens"});
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 对我来说,这似乎与沙发本身包含的 couch.js wrapper(无论这意味着什么)一样好。不仅指向我的数据库的问题仍然存在,而且这也带来了一个新的问题,即从看到一些文件和文件夹@github 到使用我的脚本中记录的方法。所有这些与沙发相关的东西对初学者来说似乎都不友好:/
      • 查看Futon自带的测试套件(点击测试名称查看源码):localhost:5984/_utils/couch_tests.html?script/couch_tests.js
      猜你喜欢
      • 2017-01-31
      • 2011-08-27
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 2018-12-25
      • 1970-01-01
      相关资源
      最近更新 更多