node.js - 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;
我很想知道我的假设是否正确,以及这种访问节点/快递世界中称为数据库层的类型到底是什么?
解决方案
推荐阅读
- json - ConvertTo-Json 拆箱单品
- php - mysqli_connect 返回 NULL
- ios - 了解调度队列线程
- javascript - 如何在“v-for”表上提取函数
- python - 如何确定一个类的classmethod和staticmethod属性?
- firebase - 跨多个服务实例使用相同的 Firebase 云消息传递服务器密钥
- c# - InvalidOperationException - 不能在当前元素的模板中设置“模板”属性
- python - 在 Jupyter 中绘制熊猫时的用户警告
- r - R:从 Telegram Bot 读取键盘答案
- sql - 左外连接是否等同于非空外键的内连接?