Как config.use_env_variable, Object.keysand readdirSync полезны при поиске моделей в коде узла js? - PullRequest
0 голосов
/ 02 мая 2019

Я новичок в Node JS и наткнулся на следующий код. Старался изо всех сил и много гуглил, чтобы понять это, но не смог. Кто-нибудь может объяснить это?

 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.json')[env];
 const db = {};
 var 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);
}

fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && 
       (file.slice(-3) === '.js');
})
.forEach(file => {
const model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});

Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});

1 Ответ

1 голос
/ 02 мая 2019

config.use_env_variable не используется для поиска моделей.Это используется для определения конфигурации базы данных, которую вы хотите использовать.Либо из файла конфигурации * sequelize config.json, либо из переменных .env.

Ниже приведен код, используемый для идентификации модели.

fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && 
       (file.slice(-3) === '.js');
})
.forEach(file => {
   const model = sequelize['import'](path.join(__dirname, file));
   db[model.name] = model; //putting model into array
});

Object.keys используется для поиска всех ключей из массива db.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...