0

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

我只找到了一个示例(https://github.com/Marsup/hapi-mongodb),但这需要使用插件并且代码中没有注释!

有谁知道更简单的方法?

4

5 回答 5

3

以下(使用猫鼬)对我来说效果很好:

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);
        });
    });

});
于 2014-12-20T04:11:57.063 回答
3

我使用我编写的连接到 mongo 的 hapi 插件,处理要记录的错误并添加 bluebird 承诺。

'use strict';

var bluebird = require('bluebird');
var mongoose = bluebird.promisifyAll(require('mongoose'));

exports.register = function(plugin, options, next) {

  mongoose.connect(options.mongo.uri, options.mongo.options, function (e) {
    if (e) {
      plugin.log(['error', 'database', 'mongodb'], 'Unable to connect to MongoDB: ' + e.message);
      process.exit();
    }

    mongoose.connection.once('open', function () {
      plugin.log(['info', 'database', 'mongodb'], 'Connected to MongoDB @ ' +  options.mongo.uri);
    });

    mongoose.connection.on('connected', function () {
      plugin.log(['info', 'database', 'mongodb'], 'Connected to MongoDB @ ' +  options.mongo.uri);
    });

    mongoose.connection.on('error', function (e) {
      plugin.log(['error', 'database', 'mongodb'], 'MongoDB ' + e.message);
    });

    mongoose.connection.on('disconnected', function () {
      plugin.log(['warn', 'database', 'mongodb'], 'MongoDB was disconnected');
    });
  });

  return next();
};

exports.register.attributes = {
  name: 'mongoose',
  version: '1.0.0'
};
于 2015-03-17T05:45:45.707 回答
1

访问http://cronj.com/blog/hapi-mongoose

完整的示例项目可以帮助您回购链接https://github.com/gauravgupta90/Hapi-Mongoose-Angular

配置.js

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

服务器.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);
});

数据库.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;
于 2015-02-22T20:19:20.027 回答
1

关于使用护照和猫鼬进行用户身份验证的博客文章

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

于 2014-08-13T22:20:16.670 回答
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}`)}
});
于 2019-09-09T09:47:12.337 回答