具有多个续集的 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 初始化代码的主要内容,如果未能解决你的问题,请参考以下文章

为表 Postgres 续集缺少的 FROM 子句条目

错误:找不到“/config/config.json”。你有没有运行“续集初始化”?

续集如何查找具有多个 where 子句和时间戳的行 > NOW()

PG(node-postgres)VS。续集

如何使用续集迁移/种子插入初始数据?

heroku Postgres - 续集:主机没有 pg_hba.conf 条目