我的Sequelize / Node设置错误?我做错了什么吗?

时间:2020-01-29 19:01:44

标签: javascript mysql node.js sequelize.js

我正在使用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);
            });
    });
};

1 个答案:

答案 0 :(得分:0)

我认为marketRoutes.js在错误的位置寻找模型。您是否不要求使用index.js,以便可以访问从文件系统导入并存储在db对象中的模型?

(我使用models目录...但是使用sequelize.import有一些优点)

相关问题