可能重复:
获得';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')
有关,所以我不知道。