我正在使用Express构建项目,尝试使用Sequelize ORM访问mySQL数据库。
我在没有定义模型和findAll Orders是函数而不是我可以查询的对象之间摇摆不定。
我的设置中是否存在明显的缺陷?谢谢!
Order.js:模型
'use strict';
module.exports = (sequelize, DataTypes) => {
var Order = sequelize.define('stores', {
index: DataTypes.INTEGER,
server: DataTypes.STRING,
gridName: DataTypes.STRING,
x: DataTypes.INTEGER,
y: DataTypes.INTEGER,
z: DataTypes.INTEGER,
owner: DataTypes.STRING,
item: DataTypes.STRING,
deal: DataTypes.STRING,
quantity: DataTypes.INTEGER,
price: DataTypes.INTEGER,
GPS: DataTypes.STRING
});
return Order;
};
index.js:模型聚合器
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(module.filename);
const env = process.env.NODE_ENV || 'development';
// const config = require(__dirname + '/..database.json')[env];
const db = {};
let sequelize;
// if (config.use_env_variable) {
// sequelize = new Sequelize(process.env[config.use_env_variable]);
// } else {
sequelize = new Sequelize('db', 'user', 'pw', {
host: 'ip',
dialect: 'mysql2'
});
// }
fs
.readdirSync(__dirname)
.filter(function(file) {
return file.indexOf('.') !== 0 && file !== basename && file.slice(-3) === '.js';
})
.forEach(function(file) {
var model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});
Object.keys(db).forEach(function(modelName) {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
marketRoutes.js:查询控制器
const models = require('../models');
module.exports = (app) => {
app.get('/api/requestOrders', (req, res) => {
console.log('hitting route', models.Order);
models.Order
.findAll()
.then(function(orders) {
console.log(orders);
})
.catch(function(err) {
console.log(err);
});
});
};
答案 0 :(得分:0)
我认为marketRoutes.js在错误的位置寻找模型。您是否不要求使用index.js,以便可以访问从文件系统导入并存储在db对象中的模型?
(我使用models目录...但是使用sequelize.import有一些优点)