可能重复:
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? 建议不要使用nano或cradle等库来启动Node.js和CouchDB。
但是我还没有找到任何关于如何以编程方式为所有DBMS执行标准操作的教程,如创建数据库,创建表,添加和查看数据等。
编辑:(部分答案)安装并启动CouchDB后转到http://localhost:5984/_utils/script/couch.js
。
答案 0 :(得分:5)
您应该首先阅读CouchDB book。
不知道为什么你不想使用模块:我认为你从上下文中得到了答案(答案可能是一年之久),并决定不使用模块。
这对完成任务不太有帮助。 :)你只是重复已完成的工作,以及已修复的问题等。
如果您想学习CouchDB,请阅读本书。您可以阅读nano的源代码,因为它非常贴近API并且应该易于阅读,但本书是完整的方法。
如果由于任何原因你决定你仍然想要实现自己的模块来做其他人已经做得好的事情,那就去吧:)
如果您正在寻找使用nano的资源,那么有很多:
答案 1 :(得分: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();
我使用了以下文档:
答案 2 :(得分:0)
CouchDB不是SQL数据库引擎。它属于“NoSQL”系列。
你不做选择,你不创建表等。
完全不同。
它实际上使用REST API来工作。例如,要访问所有文档,您可以使用以下URL上的HTTP GET访问它们:http://some.server/someDbName/_all_docs
如需更全面的介绍,我建议在Google上寻找“CouchDB教程”。
您会找到好的链接,例如this one或this 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')
有关,所以我不知道。
答案 3 :(得分:0)
以下是一些实践示例,想法和代码片段,应该有助于您的学习
Simple Blog with Coffeescript, Express and CoudbDB
Thoughts on development using CouchDB and Nodejs
Getting Started with Node.js, Express and CouchDB - 此链接现在似乎无法访问,但这似乎是一个临时问题。
这是关于测试CouchDB的问题 - Mock testing CouchDB using Node.js
希望它有所帮助。