2014-07-14 74 views
1

我有一個應用程序使用HapiJs框架編寫節點,並希望將其連接到CouchDb數據庫,但無法找到代碼來執行此操作。如何將CouchDb與HapiJs連接?

任何人都可以幫我用代碼來做到這一點嗎?這是什麼「正常」的方式?

乾杯!

回答

3

那麼你不需要任何框架的couchdb。一切都可以通過休息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是記錄here

閱讀有沒有需要管理連接或處理打開和關閉你的數據庫ight正在與其他數據庫一起做。只需啓動couchdb並開始向您的應用程序發出請求。

但是,如果您發現直接向api發出請求對您來說有點麻煩,那麼您可以嘗試使用nano,它提供了一個更好的語法來處理couchdb。

的代碼

一些片斷好,所以我不familliar與高致病性禽流感,所以我只會告訴你如何做與要求去做。

當你調用/端點它請求處理程序,它執行從docs

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的東西。

+0

好吧,但我想知道什麼是什麼是我的應用程序連接到CouchDB的數據庫的代碼?就像我們寫'var Hapi = require('hapi');' – hyprstack

0

另一種選擇可能是hapi-couchdb插件(https://github.com/harrybarnard/hapi-couchdb)。

使用它比直接對Couch API直接調用要多一點「hapi-like」。

下面是插件文件的例子:

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:[email protected]: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); 
});