0xW*_*ith 5 javascript node.js sequelize.js
我在我的node.js项目中使用sequelize,并且我不知道如何在另一个文件中导出和使用表模型。\n我将表模型保存在文件夹中,例如 Profile.js
\n\nmodule.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});\nRun Code Online (Sandbox Code Playgroud)\n\n我有这样的数据库模块database.js:
\n\nconst 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;\nRun 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();\nRun Code Online (Sandbox Code Playgroud)\n\n简而言之,我如何导出我的配置文件表并使用它,例如:
\n\nProfile.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));\nRun Code Online (Sandbox Code Playgroud)\n
所以您已经在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)