Sequelize 没有正确加载数据库表
Sequelize is not loading the database tables properly
我有一个快速服务器并且它可以:
app.db = SequelizeData config.db
app.db.sequelize.sync({force: false}).complete (err) ->
console.log err
console.log 'Initialzed database on:'
console.log config.db
SequelizeData 是:
(function() {
'use strict';
var Sequelize, fs, path, _;
_ = require('lodash');
fs = require('fs-extra');
path = require('path');
Sequelize = require('sequelize');
module.exports = function(config) {
var db, files, modelPath, myDb, sequelize;
sequelize = new Sequelize(config.database, config.username, config.password, {
dialect: 'postgres',
host: config.host,
port: config.port,
logging: false,
define: {
charset: 'utf8',
collate: 'utf8_general_ci'
}
});
db = {};
modelPath = __dirname + "/models";
files = fs.readdirSync(modelPath);
_.each(files, function(file) {
var model;
if ('.coffee' === path.extname(file)) {
model = sequelize["import"](path.join(modelPath, file));
return db[model.name] = model;
}
});
Object.keys(db).forEach(function(modelName) {
if ('associate' in db[modelName]) {
return db[modelName].associate(db);
}
});
myDb = _.assign(db, {
sequelize: sequelize,
Sequelize: Sequelize
});
return myDb;
};
}).call(this);
基本上遍历了我的模型并将它们添加到 sequelize
。但是,尽管我的数据库存在,但它不会创建任何表。我做错了什么?
谢谢!
您确定您真的需要 *.coffee 文件吗?您应该确保导入确实有效。
您可能需要执行 Sequelize.sync({force:true})
调用以让 Sequelize 删除现有表并重新创建它们。您需要在每次架构更改时执行此操作,或者手动更改架构。
您还可以设置 logging: true
以查看正在发送哪些特定 SQL 命令。
ps:这就是 Node:您不需要将模块包装在闭包中:只需将它们放在自己的文件中并 require()
它们。
我有一个快速服务器并且它可以:
app.db = SequelizeData config.db
app.db.sequelize.sync({force: false}).complete (err) ->
console.log err
console.log 'Initialzed database on:'
console.log config.db
SequelizeData 是:
(function() {
'use strict';
var Sequelize, fs, path, _;
_ = require('lodash');
fs = require('fs-extra');
path = require('path');
Sequelize = require('sequelize');
module.exports = function(config) {
var db, files, modelPath, myDb, sequelize;
sequelize = new Sequelize(config.database, config.username, config.password, {
dialect: 'postgres',
host: config.host,
port: config.port,
logging: false,
define: {
charset: 'utf8',
collate: 'utf8_general_ci'
}
});
db = {};
modelPath = __dirname + "/models";
files = fs.readdirSync(modelPath);
_.each(files, function(file) {
var model;
if ('.coffee' === path.extname(file)) {
model = sequelize["import"](path.join(modelPath, file));
return db[model.name] = model;
}
});
Object.keys(db).forEach(function(modelName) {
if ('associate' in db[modelName]) {
return db[modelName].associate(db);
}
});
myDb = _.assign(db, {
sequelize: sequelize,
Sequelize: Sequelize
});
return myDb;
};
}).call(this);
基本上遍历了我的模型并将它们添加到 sequelize
。但是,尽管我的数据库存在,但它不会创建任何表。我做错了什么?
谢谢!
您确定您真的需要 *.coffee 文件吗?您应该确保导入确实有效。
您可能需要执行 Sequelize.sync({force:true})
调用以让 Sequelize 删除现有表并重新创建它们。您需要在每次架构更改时执行此操作,或者手动更改架构。
您还可以设置 logging: true
以查看正在发送哪些特定 SQL 命令。
ps:这就是 Node:您不需要将模块包装在闭包中:只需将它们放在自己的文件中并 require()
它们。