首页 > 解决方案 > node.js 模块导出返回和使用对象

问题描述

说我有以下modelConfiguration.js文件:

const Sequelize = require('sequelize');
const dbConfig = require('../config/database.config');
module.exports = function () {

    const sequelize = new Sequelize(dbConfig.database, dbConfig.user, dbConfig.password, {
        host: 'localhost',
        dialect: 'mysql',

        pool: {
            max: 5,
            min: 0,
            acquire: 30000,
            idle: 10000
        },

        // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
        operatorsAliases: false
    });


    const employee = sequelize.define('employee', {
        id:{
            type: Sequelize.DataTypes.INTEGER,
            primaryKey: true
        },
        token: Sequelize.DataTypes.TEXT
    });

    return sequelize;


};

现在在这里,您可以看到我返回了sequelize对象。

现在我希望设置一个等于返回的对象的变量,所以在我server.js执行以下操作:

const seq = require('./models/modelConfig');

但是,这不起作用。

谁能告诉我我做错了什么?(也许我误解了什么)

标签: javascriptnode.js

解决方案


调用require('./models/modelConfig');返回一个初始化 Sequelize 的函数。

您应该调用该方法来获取实例:

const seqInitializer = require('./models/modelConfig');
const seq = seqInitializer();

或者。直接返回sequelize即可:

const Sequelize = require('sequelize');
const dbConfig = require('../config/database.config');
function initSequelize() {

    const sequelize = new Sequelize(dbConfig.database, dbConfig.user, dbConfig.password, {
        host: 'localhost',
        dialect: 'mysql',

        pool: {
            max: 5,
            min: 0,
            acquire: 30000,
            idle: 10000
        },

        // http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
        operatorsAliases: false
    });


    const employee = sequelize.define('employee', {
        id:{
            type: Sequelize.DataTypes.INTEGER,
            primaryKey: true
        },
        token: Sequelize.DataTypes.TEXT
    });

    return sequelize;


};
module.exports = initSequelize();

推荐阅读