5

可能重复:
尝试从 Node.js 将文档插入 CouchDB 时出现“bad_request invalid_json”错误

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

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

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

4

4 回答 4

5

您应该从阅读CouchDB 书开始。

不知道你为什么不想使用模块:我认为你断章取意地回答了一个答案(一个可能有一年的答案)并决定不使用模块。

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

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

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

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

于 2012-07-25T17:31:33.807 回答
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();

我使用了以下文档:

于 2012-07-25T09:38:39.217 回答
0

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

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

这是完全不同的。

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

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

你会发现像this onethis one这样的好链接。(我不保证任何,它们只是作为介绍看起来不错。)

在 node.js 中发起 http 请求,可以使用request内置http模块的方法。一种快捷方法是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'),所以不知道。

于 2012-07-25T08:20:03.897 回答
0

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

带有 Coffeescript、Express 和 CoudbDB 的简单博客

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

绑定 CouchDB 和 Node.js

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

这是一个关于测试 CouchDB -使用 Node.js 模拟测试 CouchDB

希望能帮助到你。

于 2012-07-25T08:39:22.623 回答