代码之家  ›  专栏  ›  技术社区  ›  jrocc

在express app中对原始查询进行续集

  •  1
  • jrocc  · 技术社区  · 8 年前

    我试图调用一个简单的sequelize原始查询来获取users表中的所有用户,但我得到了错误。

    无法读取未定义的属性“query”

    我做错了什么?

    模型/索引。js

    const fs = require('fs');
    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}/../config/config.json`)[env];
    const db = {};
    
    let sequelize;
    if (config.use_env_variable) {
      sequelize = new Sequelize(process.env[config.use_env_variable]);
    } else {
      sequelize = new Sequelize(
        config.database, config.username, config.password, config
      );
    }
    
    fs
      .readdirSync(__dirname)
      .filter(file =>
        (file.indexOf('.') !== 0) &&
        (file !== basename) &&
        (file.slice(-3) === '.js'))
      .forEach(file => {
        const model = sequelize.import(path.join(__dirname, file));
        db[model.name] = model;
      });
    
    Object.keys(db).forEach(modelName => {
      if (db[modelName].associate) {
        db[modelName].associate(db);
      }
    });
    
    db.sequelize = sequelize;
    
    module.exports = db;
    

    控制器/用户

    const db  = require('../models/index').db;
    
    module.exports = {
    
      getAllUsers(req, res){
        db.query('SELECT * FROM "Users" As Users', { type: sequelize.QueryTypes.SELECT})
        .then(result => {
          return res.status(201).send({
            result
          });
        })
      }
    };
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   jrocc    8 年前

    必须改变

    const db  = require('../models/index').db;
    

    const db  = require('../models/index');
    

    加上 const sequelize = require('sequelize');

    推荐文章