node.js - User.findAll 不是一个函数

标签 node.js express sequelize.js

这是我的 models/user.js

var sequelize = require('sequelize');
var bcrypt = require('bcrypt');

module.exports = function(sequelize, DataTypes) {
    const User = sequelize.define('users', {
        user_id: {
            type: DataTypes.INTEGER,
            autoIncrement: true,
            primaryKey: true
        },
        user_name: DataTypes.DATE,
        email: DataTypes.STRING,
        password: DataTypes.STRING
    }, {
        freezeTableName: true,
        instanceMethods: {
            generateHash(password) {
                return bcrypt.hash(password, bcrypt.genSaltSync(8));
            },
            validPassword(password) {
                return bcrypt.compare(password, this.password);
            }
        }
    });

    return User;
}

这是我的 models/index.js

module.exports = {
    User: require('./user')
  };

这是我的 UserController.js

var sequelize = require("sequelize");
var models = require("../models/index");

var userController = {};

// Show list of users
userController.list = function(req, res) {
 models.User.findAll()
  .then( userResponse => {
    res.status( 200 ).json( userResponse )
  })
  .catch( error => {
    res.status( 400 ).send( error )
  });
};  

在本地主机中执行上述代码时,出现错误“User.findAll 不是函数”。我尝试了各种方法但没有结果。需要帮忙。 我正在使用express-nodejs-Sequelize(mysql2)

最佳答案

您需要将一个sequelize实例和一个DataTypes传递给您的User.js

module.exports = function(sequelize, DataTypes)

因此,为了做到这一点,您应该将 models/index.js 更改为类似这样的内容。

var Sequelize = require("sequelize");
var user = require("./user");
var sequelize = new Sequelize("your db config goes here");

module.exports = {
    User: user(sequelize, Sequelize.DataTypes),
}

并且您不需要在每个文件中都要求sequelize,将其从 Controller 和模型中删除

有一个示例存储库 here向您展示了如何将sequelize与express.js一起使用,我们通常使用像this这样的index.js这将遍历您的模型文件夹,您将能够使用 db['User']

访问模型

关于node.js - User.findAll 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50604348/

相关文章:

node.js - Sequelize - 无法读取未定义的属性 'list'

javascript - 在 Meteor 集合中具有一致的客户端 session ID

javascript - NodeJS/Express 中的 "module.exports"和 "exports.methods"是什么意思?

javascript - nodemon 显示正在重新启动服务器,但在对文件进行更改时不起作用

mysql - 在我的 sql 中通过 sequelize 原始查询搜索单值和双值时出现 sql 语法错误

node.js - Sequelize 方言问题

node.js - Windows 服务在我的 NodeJS 项目目录上执行 `npm start`

php - OpenSSL PHP 到 JavaScript( Node )

javascript - Node js表达路线/用户?限制= 20&偏移= 0

javascript - Hogan JS 模板中的 For 循环