如何使用Hapi.js连接到MongoDb?

如何使用Hapi.js连接到MongoDb?,mongodb,hapijs,Mongodb,Hapijs,有人知道如何在使用Hapi.js框架时连接到MongoDb吗 我只找到了一个示例(),但这需要使用插件,并且代码中没有注释 有人知道更简单的方法吗? 还要注意的是,Hapi的模型是基于插件的,所以请阅读并重新阅读您自己构建的文档。以下内容(使用mongoose)对我来说非常有用: var Hapi = require('hapi'); var mongoose = require("mongoose"); var server = new Hapi.Server(); server.conne

有人知道如何在使用Hapi.js框架时连接到MongoDb

我只找到了一个示例(),但这需要使用插件,并且代码中没有注释

有人知道更简单的方法吗?

还要注意的是,Hapi的模型是基于插件的,所以请阅读并重新阅读您自己构建的文档。

以下内容(使用mongoose)对我来说非常有用:

var Hapi = require('hapi');
var mongoose = require("mongoose");

var server = new Hapi.Server();
server.connection({ port: 3000 });

var dbUrl = 'mongodb://localhost:27017/mydb';
var dbOtions = {
    db: { native_parser: true },
    server: { poolSize: 5 }
};

server.register([ /* plugins */], function (err) {
    if (err) {
        throw err; // something bad happened loading the plugins
    }

    // ... Register the routes

    server.start(function () {
        mongoose.connect(dbUrl, dbOtions, function(err) {
            if (err) server.log('error', err);
        });
    });

});
拜访

完整的样本项目,可以帮助你回购链接

Config.js

module.exports = {
    server: {
        host: '0.0.0.0',
        port: 8000
    },
    database: {
        host: '127.0.0.1',
        port: 27017,
        db: 'DatabaseName',
        username: '',
        password: ''
    }
};
Server.js

var Hapi = require('hapi'),
Routes = require('./routes'),
config = require('./config'),
Db = require('./database');
var server = Hapi.createServer(config.server.host, config.server.port, {
    cors: true
});
server.route(Routes.endpoints);
server.start(function() {
    console.log('Server started ', server.info.uri);
});
Database.js

var Mongoose = require('mongoose'),
    config = require('./config');
Mongoose.connect('mongodb://' + config.database.host + '/' + config.database.db);
var db = Mongoose.connection;
db.on('error', console.error.bind(console, 'connection error'));
db.once('open', function callback() {
    console.log("Connection with database succeeded.");
});
exports.Mongoose = Mongoose;
exports.db = db;

我使用我编写的一个hapi插件连接到mongo,处理日志中的错误,并添加蓝鸟承诺

“严格使用”;
var bluebird=require(‘bluebird’);
var mongoose=蓝知更鸟promisifyAll(require('mongoose'));
exports.register=函数(插件、选项、下一步){
connect(options.mongo.uri、options.mongo.options、函数(e){
如果(e){
plugin.log(['error'、'database'、'mongodb']、'无法连接到mongodb:'+e.message);
process.exit();
}
mongoose.connection.once('open',function(){
log(['info','database','mongodb'],'connectedtomongodb@'+options.mongo.uri);
});
mongoose.connection.on('connected',function(){
log(['info','database','mongodb'],'connectedtomongodb@'+options.mongo.uri);
});
mongoose.connection.on('error',function(e){
log(['error','database','mongodb'],'mongodb'+e.message);
});
mongoose.connection.on('disconnected',function(){
log(['warn','database','mongodb'],'mongodb已断开连接];
});
});
返回next();
};
exports.register.attributes={
名称:“猫鼬”,
版本:“1.0.0”
};

以下内容对我很有用:

const Hapi = require("hapi");
const Mongoose = require("mongoose");

const server = new Hapi.Server({ "host": "localhost", "port": 3000 });

Mongoose.connect('mongodb://localhost:27017/testdb', { useNewUrlParser: true }, (err) => {
    if (!err) { console.log('MongoDB Connection Succeeded.') }
    else { console.log(`Error in DB connection : ${err}`)}
});

你能简单解释一下吗?在链接中的示例中,每次编写处理函数时,你都必须定义
var db=request.server.plugins['hapi-mongodb'].db
var ObjectID=request.server.plugins['hapi-mongodb'].ObjectID。随着时间的推移,这将变得很麻烦。simpler的意图是在任何处理程序函数之外有一个连接实例。例如,像
var db=mongoose.connection()