我有一个使用 Node 的 HapiJs 框架编写的应用程序,并希望将其连接到 CouchDb 数据库,但找不到执行此操作的代码。
谁能帮我写代码来做到这一点?这样做的“正常”方式是什么?
干杯!
好吧,您不需要任何 couchdb 框架。一切都可以通过 rest api 获得。只需使用request模块向 api 发出请求。几个例子: -
阅读文档
request.get("http://localhost:5984/name_of_db/id_of_docuement",
function(err,res,data){
if(err) console.log(err);
console.log(data);
});
从视图中读取
request.get(
"http://localhost:5984/name_of_db/_design/d_name/_view/_view_name",
function(err,res,data){
if(err) console.log(err);
console.log(data);
});
整个 api 记录在这里
无需像其他数据库一样管理连接或处理数据库的打开和关闭。只需启动 couchdb 并开始从您的应用程序发出请求。
但是,如果您发现直接向 api 发出请求对您来说有点麻烦,那么您可以尝试使用nano,它为使用 couchdb 提供了更好的语法。
一些代码片段
好吧,所以我对 hapi 不熟悉,所以我只会告诉你如何根据请求来做。
考虑文档中的这个例子
var Hapi = require('hapi');
var server = new Hapi.Server(3000);
var request = require("request");
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/{name}',
handler: function (req, rep) {
request.get("http://localhost:5984/name_of_db/id_of_docuement",
function(err,res,data){
if(err) console.log(err);
rep(data);
});
}
});
server.start(function () {
console.log('Server running at:', server.info.uri);
});
当您调用/
端点时,它的请求处理程序将被执行。它向 couchdb 端点发出请求以获取文档。除此之外,您不需要任何东西来连接到 couchdb。
另一种选择可能是 hapi-couchdb 插件(https://github.com/harrybarnard/hapi-couchdb)。
使用它比直接调用 Couch API 更“类似hapi”。
这是插件文档中的一个示例:
var Hapi = require('hapi'),
server = new Hapi.Server();
server.connection({
host: '0.0.0.0',
port: 8080
});
// Register plugin with some options
server.register({
plugin: require('hapi-couchdb'),
options: {
url: 'http://username:password@localhost:5984',
db: 'mycouchdb'
}
}, function (err) {
if(err) {
console.log('Error registering hapi-couchdb', err);
} else {
console.log('hapi-couchdb registered');
}
});
// Example of accessing CouchDb within a route handler
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
var CouchDb = request.server.plugins['hapi-couchdb'];
// Get a document from the db
CouchDb.Db.get('rabbit', { revs_info: true }, function(err, body) {
if (err) {
throw new Error(CouchDb.Error(error); // Using error decoration convenience method
} else {
reply(body);
});
}
});
server.start(function() {
console.log('Server running on host: ' + server.info.uri);
});