如何使用 Javascript 写入 CouchDB?

Džu*_*ris 5 javascript rest jquery couchdb

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

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

大多数教程只展示了 CouchDB 如何与 curl 一起工作,我还没有看到使网站与数据库交互的教程。这不是 CouchDB 的用途吗?

Aur*_*ien 6

从 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 !");
   }
  });
}
Run Code Online (Sandbox Code Playgroud)

但要小心:如果不是从与 CouchDB 相同的服务中检索请求,出于安全原因,该请求将被阻止。所以把你的 HTML 页面作为你设计文档的附件。

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


Jon*_*Rys 5

仅仅因为我也很难找到明确的答案,以下是在 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));
}
Run Code Online (Sandbox Code Playgroud)

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

createDB('baseball');
updateDB('baseball', 'document', {"pitcher":"Nolan Ryan"});
Run Code Online (Sandbox Code Playgroud)

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

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