【问题标题】:Starting with Node.js and CouchDB without libraries like nano or cradle [duplicate]从 Node.js 和 CouchDB 开始,没有 nano 或 cradle 等库 [重复]
【发布时间】:2019-05-23 18:50:20
【问题描述】:

可能重复:
Getting ' bad_request invalid_json' error when trying to insert document into CouchDB from Node.js

投票最高的答案 CouchDB and Node.js - What module do you recommend? 从 Node.js 和 CouchDB 开始,建议不要使用 nano 或 cradle 等库。

但是我还没有找到任何关于如何以编程方式为所有 DBMS 执行标准操作的教程,例如创建数据库、创建表、添加和查看数据等。

编辑:(部分答案)安装和启动 CouchDB 后转到http://localhost:5984/_utils/script/couch.js

【问题讨论】:

    标签: javascript node.js couchdb couchdb-nano


    【解决方案1】:

    你应该从阅读CouchDB book开始。

    不知道您为什么不想使用模块:我认为您断章取义(可能是一年前的答案)并决定不使用模块。

    这不太可能有助于完成工作。 :) 您只是在重复已完成的工作以及已解决的问题等。

    如果您想学习 CouchDB,请阅读本书。您可以阅读 nano 的源代码,因为它与 API 非常接近并且应该很容易阅读,但是这本书是完整的方法。

    如果出于任何原因您决定仍想实现自己的模块来做其他人已经做得好的事情,那就去做吧:)

    如果您正在寻找有关使用 nano 的资源,则有很多:

    【讨论】:

    • Jason 的建议仍然有效,无论答案的年龄如何。尤其是使用 Node.js 时,实际上并不需要只包装出色的 HTTP API 的库。
    【解决方案2】:

    感谢Ruben Verborgh,我自己从多个来源编译了微教程。

    var http = require('http')
    var sys = require('sys')
    
    
    var couchdbPath = 'http://localhost:5984/'
    
    request = require('request')
    h = {accept: 'application/json', 'content-type': 'application/json'}
    request(
      {uri: couchdbPath + '_all_dbs', headers:h}, 
      function(err, response, body) { console.log(sys.inspect(JSON.parse(body))); }
    )
    
    // add database
    request(
      {uri: couchdbPath + 'dbname', method:'PUT', headers:h},
      function (err, response, body) {
        if (err)
          throw err;
        if (response.statusCode !== 201)
          throw new Error("Could not create database. " + body);
      }
    )
    
    // Modify existing document
    var options = {
      host: "localhost",
      port: 5984,
      path: "/dbname",
      headers: {"content-type": "application/json"},
      method: "PUT"
    };
    
    var req = http.request(options, function(res) {
      console.log('STATUS: ' + res.statusCode);
      //console.log('HEADERS: ' + JSON.stringify(res.headers));
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
        console.log('BODY: ' + chunk);
      });
    });
    
    req.on('error', function(e) {
      console.log('problem with request: ' + e.message);
    });
    
    // write data to request body
    req.write(JSON.stringify({
      "_id":"rabbit",
      "_rev":"4-8cee219da7e61616b7ab22c3614b9526",
      "Subject":"I like Plankton"
    }));
    
    req.end();
    

    我使用了以下文档:

    【讨论】:

    • 这本身是一个答案还是一个问题?
    • 回答。很奇怪,文档中没有这样的例子。印象是CouchDB+Node.js+web-in-general没有初学者
    • 谢谢..您的回答打开了资源的海洋
    【解决方案3】:

    这里有一些动手示例、想法和代码-sn-ps,它们应该对您的学习有所帮助

    Simple Blog with Coffeescript, Express and CoudbDB

    Thoughts on development using CouchDB and Nodejs

    Bind CouchDB and Node.js

    Getting Started with Node.js, Express and CouchDB - 现在似乎无法访问此链接,但这似乎是一个临时问题。

    这是一个关于测试 CouchDB - Mock testing CouchDB using Node.js

    希望对你有帮助。

    【讨论】:

    • 第一个链接 - 使用 cradle,第二个 - 不是解决方案,第三个 - 使用 nano。
    • 已经在 Node.js 上编译有用资源大约一年了,我猜这个列表几乎就是 CouchDB 和 Node.js 上可用的资源
    • almypal 你的名单缺少不少。我会将它们发布在单独的答案中
    【解决方案4】:

    CouchDB 不是 SQL 数据库引擎。它属于“NoSQL”家族。

    你不做选择,你不创建表格,等等。

    完全不同。

    它实际上是使用 REST API 来工作的。例如,要访问所有文档,您可以在以下 URL 上使用 HTTP GET 访问它们:http://some.server/someDbName/_all_docs

    如需更全面的介绍,我建议在 Google 上查找“CouchDB 教程”。

    您会找到像 this onethis one 这样的好链接。 (我不担保任何东西,它们只是作为介绍看起来不错。)

    要在node.js中发起http请求,可以使用内置http模块的request方法。一个快捷方式是http.get,你可以这样使用:

    var http = require( 'http' );
    
    http.get( 'http://some.url/with/params', function( res ) {
        // res has the values returned
    });
    

    阅读您的代码后进行编辑:

    首先,您使用的文档是否已过时。节点是 v0.8,而不是 0.4。

    其次,你的request = require('request') 肯定会出现一些问题(模块是否存在?)。我认为第一部分甚至没有被执行。

    第三,现在尝试一个 GET 请求。比如:

    var http = require( 'http' );
    http.get( 'http://localhost:5984/_all_dbs', function( res ) {
        console.log( res );
    });
    

    看看它是否有效。如果是,您已经知道如何使用 couchdb ;)

    最后,您最后的要求似乎没有错。也许它与require('request')有关,所以我不知道。

    【讨论】:

    • 我大概知道 NoSQL 是什么意思,抱歉使用了错误的语言。您建议的链接不提供编程方法,仅提供 curl。
    • 程序化方法:做 HTTP 请求。 curl做http请求,也是一样的。
    • 但我很难以编程方式执行此操作几个小时。我希望很快我自己发布答案。
    • 哦 :-) 我编辑了答案@DSblizzard
    • 太简单了:)。我会发布我的代码
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多