1

我有一个使用 Node 的 HapiJs 框架编写的应用程序,并希望将其连接到 CouchDb 数据库,但找不到执行此操作的代码。

谁能帮我写代码来做到这一点?这样做的“正常”方式是什么?

干杯!

4

2 回答 2

3

好吧,您不需要任何 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。

于 2014-07-15T11:24:05.933 回答
0

另一种选择可能是 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);
});
于 2015-10-01T23:37:27.353 回答