如何在sequelize中导出和使用模型

0xW*_*ith 5 javascript node.js sequelize.js

我在我的node.js项目中使用sequelize,并且我不知道如何在另一个文件中导出和使用表模型。\n我将表模型保存在文件夹中,例如 Profile.js

\n\n
module.exports = (sequielize, DataTypes) => sequielize.define(\'Profile\', {\n  ID: {\n    type: DataTypes.INTEGER,\n    autoIncrement: true,\n    primaryKey: true,\n    allowNull: false\n  },\n  Login: {\n    type: DataTypes.STRING(24),\n    allowNull: false\n  },\n  SocialClub: {\n    type: DataTypes.STRING(128),\n    allowNull: false\n  },\n  Email: {\n    type: DataTypes.STRING(64),\n    allowNull: false\n  },\n  RegIP: {\n    type: DataTypes.STRING(17),\n    allowNull: false\n  },\n  LastIP:\n  {\n    type: DataTypes.STRING(17),\n    allowNull: false\n  },\n  RegDate: {\n    type: DataTypes.DATE,\n    defaultValue: DataTypes.NOW,\n    allowNull: false\n  },\n  LastDate: {\n    type: DataTypes.DATE,\n    defaultValue: DataTypes.NOW,\n    allowNull: false\n  }\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有这样的数据库模块database.js:

\n\n
const Sequelize = require(\'sequelize\');\nconst fs = require(\'fs\')\nconst path = require(\'path\')\nconst config = require(\'../configs/server_conf\');\n\ndb = {};\n\nconst sequelize = new Sequelize(\n    config.db_settings.database,\n    config.db_settings.user,\n    config.db_settings.password,\n    config.db_settings.options);\n\ndb.sequelize = sequelize;\ndb.Sequelize = Sequelize;\n\ndb.checkConnection = async function() {\n    sequelize.authenticate().then(() => {\n\n        console.log(\'\xd0\x9f\xd0\xbe\xd0\xb4\xd0\xba\xd0\xbb\xd1\x8e\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xba \xd0\xb1\xd0\xb0\xd0\xb7\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xbf\xd1\x80\xd0\xbe\xd1\x88\xd0\xbb\xd0\xbe \xd1\x83\xd1\x81\xd0\xbf\xd0\xb5\xd1\x88\xd0\xbd\xd0\xbe!\');\n\n        //import db models\n        fs.readdirSync(path.join(__dirname, \'..\', \'models\')).forEach(file => {\n            var model = sequelize.import(path.join(__dirname, \'..\', \'models\', file));\n            db[model.name] = model;\n\n        });\n\n        sequelize.sync({\n            force: true\n        }).then(() => {\n            console.log(\'synchroniseModels: \xd0\x92\xd1\x81\xd0\xb5 \xd1\x82\xd0\xb0\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x86\xd1\x8b \xd0\xb1\xd1\x8b\xd0\xbb\xd0\xb8 \xd1\x81\xd0\xbe\xd0\xb7\xd0\xb4\xd0\xb0\xd0\xbd\xd1\x8b!\');\n        }).catch(err => console.log(err));\n\n        mp.events.call("initServerFiles");\n\n    }).catch(err => {\n        console.error(\'\xd0\x9d\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xb7\xd0\xbc\xd0\xbe\xd0\xb6\xd0\xbd\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xba\xd0\xbb\xd1\x8e\xd1\x87\xd0\xb8\xd1\x82\xd1\x8c\xd1\x81\xd1\x8f \xd0\xba \xd0\xb1\xd0\xb0\xd0\xb7\xd0\xb5 \xd0\xb4\xd0\xb0\xd0\xbd\xd0\xbd\xd1\x8b\xd1\x85:\', err);\n    });\n}\n\nmodule.exports = db;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有这样一个 index.js 文件,我在其中导出 checkConnection 函数:

\n\n
"use strict"\n\nconst fs = require(\'fs\');\nconst path = require(\'path\');\n\nconst { checkConnection } = require(\'./modules/database.js\');\nvar Events = [];\n\nmp.events.add(\n{\n    "initServerFiles" : () =>\n    {\n        fs.readdirSync(path.resolve(__dirname, \'events\')).forEach(function(i) {\n            Events = Events.concat(require(\'./events/\' + i));\n        });\n\n        Events.forEach(function(i) {\n            mp.events.add(i);\n            console.log(i);\n        });\n\n        mp.events.call(\'initServer\');\n\n        console.log("\xd0\x97\xd0\xb0\xd0\xb3\xd1\x80\xd1\x83\xd0\xb7\xd0\xba\xd0\xb0 \xd0\xb2\xd1\x81\xd0\xb5\xd1\x85 \xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb\xd0\xbe\xd0\xb2 \xd0\xbf\xd1\x80\xd0\xbe\xd1\x88\xd0\xbb\xd0\xb0 \xd1\x83\xd1\x81\xd0\xbf\xd0\xb5\xd1\x88\xd0\xbd\xd0\xbe!");\n    }\n});\n\ncheckConnection();\n
Run Code Online (Sandbox Code Playgroud)\n\n

简而言之,我如何导出我的配置文件表并使用它,例如:

\n\n
Profile.create({\n            Login: "0xWraith",\n            SocialClub: "0xWraith",\n            Email: "mail@gmail.com",\n            RegIP: "127.0.0.1",\n            LastIP: "127.0.0.1",\n            LastDate: "07.04.2020"\n        }).then(res => {\n             console.log(res);\n        }).catch(err=>console.log(err));\n
Run Code Online (Sandbox Code Playgroud)\n

Ana*_*oly 3

所以您已经在database.js 模块中拥有了所有注册的模型。只需像这样导入整个database.js:

const db = require('./modules/database.js');
...
db.Profile.create({
            Login: "0xWraith",
            SocialClub: "0xWraith",
            Email: "mail@gmail.com",
            RegIP: "127.0.0.1",
            LastIP: "127.0.0.1",
            LastDate: "07.04.2020"
        }).then(res => {
             console.log(res);
        }).catch(err=>console.log(err));
Run Code Online (Sandbox Code Playgroud)