这是一个显示问题https://youtu.be/JXyuUbscPLQ
的截屏视频index.js
import fs from 'fs'
import path from 'path'
import Sequelize from 'sequelize'
import AppConfig from './../../config'
const basename = path.basename(__filename)
const env = process.env.NODE_ENV || 'develop'
const config = AppConfig.get('/db')
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
)
}
fs
.readdirSync(__dirname)
.filter(file => (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)
}
})
db.sequelize = sequelize
db.Sequelize = Sequelize
db.env = env
export default db
mediaGateway.js
import db from './../../db/models/index'
const mediaGateway = {
update: async (media) => {
const updatedMedia = await db.media.update(media, { where: { uuid: media.uuid } })
return updatedMedia
}
}
export default mediaGateway
这是控制台日志输出的一个db对象。我知道它是一个db对象,因为我也是console.logged db.media等
答案 0 :(得分:-1)
事实上你的代码似乎没问题。
让我们在类构造函数中注入db对象时尝试不同的方法:
import db from './../../db/models/index'
class MediaGateway
{
constructor (db) {
this._db = db;
}
async update (media) {
const db = this._db;
return await db.media.update(media, { where: { uuid: media.uuid } });
}
}
export default new MediaGateway(db);
如果没有帮助,那么在导出之前尝试调试模块内的db对象:
console.log('Before exporting:', db, db.media);
export default db;
如果显示ok,但仍然无法在另一个文件中获取db对象,请尝试使用旧的plain:
module.exports = db;
和
const db = require('./../../db/models');
我个人仍然没有使用ES6导出/导入,async / await功能,直到它成熟为止。我仍然使用承诺和老派的出口方式和要求模块。