首页 > 解决方案 > db 层是如何被准确使用的,什么是访问节点中调用的 db 层?

问题描述

我刚刚在使用 express.js 的路由文件中遇到以下代码行

model = req.app.get('db_model');

有问题的代码行可以在这里找到。

我明白是什么req.app,但我不完全确定 db_modal 是什么,阅读代码让我感觉它是访问数据库的层或向数据库发送查询的单点条目,我的假设是否正确?

在主 app.js 文件中,我看到db_modal是如何设置的:-

app.set('db_model', require('./lib/model/db'));

lib/model/db看起来像这样的内容: -

"use strict";

var fs        = require("fs");
var path      = require("path");
var Sequelize = require("sequelize");
var env       = process.env.NODE_ENV || "development";
var config    = require(__dirname + '/../../../config/db.json')[env];
var sequelize = new Sequelize(config.database, config.username, config.password, config);
var db        = {};

fs
  .readdirSync(__dirname)
  .filter(function(file) {
    return (file.indexOf(".") !== 0)
      && (file !== "index.js");
  })
  .forEach(function(file) {
    var model = sequelize["import"](path.join(__dirname, file));
    db[model.name] = model;
  });

// Link models according associations
//
Object.keys(db).forEach(function(modelName) {
  if ("associate" in db[modelName]) {
    db[modelName].associate(db);
  }
});

// Add scopes
//
Object.keys(db).forEach(function(modelName) {
  if ('loadScope' in db[modelName]) {
    db[modelName].loadScope(db);
  }
});

// Link models based on associations that are based on scopes
//
Object.keys(db).forEach(function(modelName) {
  if ('scopeAssociate' in db[modelName]) {
    db[modelName].scopeAssociate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

我很想知道我的假设是否正确,以及这种访问节点/快递世界中称为数据库层的类型到底是什么?

标签: node.jsexpress

解决方案


推荐阅读