这是我的文件结构:
-models
-user.js
-room.js
-database.js
-controllers
-createRoom.js
-routes.js
..
user.js和room.js是我要导入到database.js中的模块。现在我正在做这样的事情:
在database.js中:
var mysql = require('mysql');
var Sequelize = require('sequelize');
var db = new Sequelize('test', 'root', 'root', {
dialect: "mysql",
port: 3306
})
var User = require('./user.js')(Sequelize, db);
var Room = require('./room.js')(Sequelize, db);
module.exports = function(){
//code...
};
在user.js / room.js中
module.exports = function (Sequelize, db) {
var Room = db.define('Room', {
room_id : {type: Sequelize.INTEGER, allowNull: false, autoIncrement: true, primaryKey: true},
})
db
.sync({force: true})
.complete(function (err) {})
到目前为止,到目前为止还不错,但是当我需要在除database.js(例如createRoom.js)之外的其他文件中导入user.js或room.js时,由于在数据库中没有像Sequelize和db这样定义的数据,所以我很难导入它们。 js。这是否意味着我必须连接到数据库并在需要在其他文件中使用user.js和room.js模块时再次要求Sequelize?有没有更好的方法来解决此问题?谢谢!
你在这里有不同的可能性
再出口模型:
在你的database.js中
//init code as seen
module.exports.Room = Room
导入其他地方
require('../models/database').Room
使您的database.js依赖
在database.js中
module.export = { Sequelize: Sequelize, db : db}
在room.js中
var dbModule = require('./database')
module.exports = dbModule.Sequelize.define('Room', /*....*/)
将模型附加到init函数
在room.js中
module.exports = roomInit
function roomInit(Sequelize, db) {
roomInit.Room = db.define('Room', {
room_id : {type: Sequelize.INTEGER, allowNull: false, autoIncrement: true, primaryKey: true}
})
db
.sync({force: true})
.complete(function (err) {})
}
用法
require('./room').Room
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句