小编moj*_*ker的帖子

从nodejs到mongodb或mongoose的动态数据库连接

我正在尝试创建一个多租户应用程序(saas),其中每个客户端都有自己的数据库.

我的情况是:

我创建了一个中间件来确定客户端是基于子域的,然后从通用数据库中检索客户端的数据库连接信息.我不知道如何为此客户端建立连接对象,以便能够在我的控制器中使用.我应该在中间件或控制器中执行此操作吗?如果它在模型中,我如何传递连接字符串和参数(我可以使用会话,但我不知道如何从模型内访问会话).

我该怎么做?

  1. 组织:我在哪里动态创建客户端的数据库连接?
  2. 将连接参数注入/传递给控制器​​或模型(进行连接定义)
  3. 动态连接完成后,如何为该客户端全局访问?

这是我的中间件的一个例子,我想创建一个mongoose连接,我想动态(传递客户端的连接信息):

function clientlistener() {
    return function (req, res, next) {
       console.dir('look at my sub domain  ' + req.subdomains[0]);
       // console.log(req.session.Client.name);

    if (req.session.Client && req.session.Client.name === req.subdomains[0]) {
          var options = session.Client.options;
          var url = session.Client.url
          var conn = mongoose.createConnection(url, options);
          next();
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从控制器内部访问此连接对象?还是从模特?

谢谢.

javascript mongoose mongodb node.js express

14
推荐指数
2
解决办法
6387
查看次数

bluebird Promisies crud示例使用nodejs,express和mongoose

我的朋友,不幸的是我找不到任何关于如何在节点js express mongoose app中实现bluebird promise库的例子.

我的应用程序设置为猫鼬模型,控制器和路由在不同的文件中.

但是用mongoose实现它,我只是无法弄明白.

所以请有人告诉我它是如何使用的.请看下面.

//express controller Article.js


var mongoose = require('mongoose'),
errorHandler = require('./errors'),
Article = mongoose.model('Article');

exports.list = function(req, res) {
Article.find().sort('-created').populate('user', 'displayName').exec(function(err, articles) {
      if (err) {
          return res.status(400).send({
            message: errorHandler.getErrorMessage(err)
          });
      } else {
          res.jsonp(articles);
      }
  });
};
Run Code Online (Sandbox Code Playgroud)

//猫鼬模型

 /**
 * Module dependencies.
 */
 var mongoose = require('mongoose'),
 Schema = mongoose.Schema;

 /**
 * Article Schema
 */
 var ArticleSchema = new Schema({
    created: {
        type: Date,
        default: Date.now
    },
    title: {
        type: String,
        default: …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js express bluebird

6
推荐指数
1
解决办法
5306
查看次数

标签 统计

express ×2

javascript ×2

mongoose ×2

node.js ×2

bluebird ×1

mongodb ×1