从Node.js和CouchDB开始,没有像nano或cradle这样的库



可能重复:
获得';bad_request invalid_json';尝试从Node.js 将文档插入CouchDB时出错

投票最高的答案CouchDB和Node.js-你推荐什么模块?建议不要使用nano或cradle等库来启动Node.js和CouchDB。

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

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

您应该从阅读CouchDB这本书开始。

不知道你为什么不想使用模块:我认为你断章取义地给出了一个答案(这个答案可能已经一年了),并决定不使用模块。

这不太可能有助于完成任务。:)你只是在重复已经完成的工作,以及已经修复的问题,等等。

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

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

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

  • 自述文件:github
  • 屏幕广播:couchdb和nano
  • 文章:nano-一个用于nodejs的极简主义couchdb客户端
  • 文章:开始使用node.js和couchdb
  • 文章:文档更新处理程序支持
  • 文章:纳米3
  • 文章:使用node.js和nano通过couchdb cookie身份验证保护网站
  • 文章:向nano添加副本
  • 文章:如何使用nano更新文档
  • 文章:使用nock在node.js中模拟http集成测试并指定
  • 文章:使用nock和tap在node.js中模拟测试couchdb

多亏了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();

我使用了以下文档:

  • http.request()
  • CouchDB完整HTTP API参考

以下是一些实际操作的例子、想法和代码片段,它们应该有助于您的研究

Coffeescept,Express和CoudbDB 的简单博客

使用CouchDB和Nodejs 进行开发的思考

绑定CouchDB和Node.js

Node.js、Express和CouchDB入门-现在似乎无法访问此链接,但这似乎是一个临时问题。

这里有一个关于测试CouchDB的例子-使用Node.js 模拟测试Couch数据库

希望能有所帮助。

CouchDB不是SQL数据库引擎。它属于"NoSQL"类。

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

这完全不同。

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

为了更全面的介绍,我建议在谷歌上查找"CouchDB教程"。

你会发现像这个或这个这样的好链接。(我不担保,它们只是作为一个介绍看起来不错。)

要在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')有关,所以我不知道。

最新更新