【问题标题】:How to connect to MongoDb with Hapi.js?如何使用 Hapi.js 连接到 MongoDb?
【发布时间】:2019-09-09 17:47:12
【问题描述】:

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

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

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

【问题讨论】:

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

标签: mongodb hapijs


【解决方案1】:

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

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

});

【讨论】:

    【解决方案2】:

    我使用自己编写的 hapi 插件连接到 mongo,处理错误以记录日志并添加 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'
    };
    

    【讨论】:

      【解决方案3】:

      Blog post on user authentication with passport and Mongoose

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

      【讨论】:

        【解决方案4】:

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

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

        Config.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;
        

        【讨论】:

          【解决方案5】:

          以下对我有用:

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

          【讨论】:

            猜你喜欢
            • 2021-11-29
            • 2018-07-17
            • 1970-01-01
            • 2017-09-09
            • 1970-01-01
            • 2019-12-10
            • 2017-05-24
            • 1970-01-01
            • 2019-10-15
            相关资源
            最近更新 更多