具有多个续集的 postgres 初始化代码
Posted
技术标签:
【中文标题】具有多个续集的 postgres 初始化代码【英文标题】:postgres init code with multiple sequelize 【发布时间】:2021-10-02 14:38:18 【问题描述】:我正在尝试将 js 代码转换为 ts 代码(并理解为什么会这样做)。
这是我的 JS 代码
use strict';
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.js')[env];
const db = ;
let sequelize;
if (config.use_env_variable)
sequelize = new Sequelize(process.env[config.use_env_variable], config);
else
sequelize = new Sequelize(config.database, config.username, config.password, config);
Object.keys(db).forEach(modelName =>
if (db[modelName].associate)
db[modelName].associate(db);
);
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
这里有多个squalise
db.sequelize = sequelize;
db.Sequelize = Sequelize;
有人可以帮助我理解含义、目的以及它们两者存在的原因吗?以及我们将在哪里使用它们。
我能够理解sequelize
,但不能理解Sequelize
。就像我们已经使用了new Sequelize(
那我们为什么要在 db 对象中添加它呢?
【问题讨论】:
如果不探索代码库并检测db.Sequelize
的使用位置,我们如何知道为什么编写代码的人添加了该属性?它可能无用且从未使用过,或者在软件的某些其他部分中可能是必需的。我们无从得知
【参考方案1】:
Sequelize 是指库本身,而 sequelize 是指 Sequelize 的一个实例,它表示与一个数据库的连接。这是推荐的约定,并且在 sequelize 的官方文档中也遵循。
例如,db.Sequelize.fn() 正在使用 sequelize 模块中的特定函数,而 db.sequelize.model.findAll() 正在使用与特定数据库的连接中的实例。
【讨论】:
以上是关于具有多个续集的 postgres 初始化代码的主要内容,如果未能解决你的问题,请参考以下文章
错误:找不到“/config/config.json”。你有没有运行“续集初始化”?