You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js + Sequelize报错:User.find is not a function 问题求助

解决Sequelize报错:User.find is not a function

问题根源

  1. Sequelize模型没有find()方法,查询全量数据的正确方法是findAll()。
  2. 模型导入方式可能有误——你的user.js导出的是工厂函数,必须传入sequelize实例和DataTypes才能生成可用的模型实例。

修复方案

1. 替换查询方法

直接把路由代码里的User.find({})改成User.findAll({}),这是Sequelize获取所有记录的标准用法。

修正后的路由代码:

const router = require('express').Router();
const User = require('../models/user');

router.route('/getUser').post((req, res) => {
  User.findAll({})
    .then(users => res.json(users))
    .catch(err => res.status(400).json(`Error: ${err}`));
});

2. 确保模型正确初始化

如果你的项目用了Sequelize自动生成的models/index.js,不要直接导入user.js,从index.js中获取已初始化的模型:

const { User } = require('../models');

如果没有自动生成的index.js,需要手动传入参数初始化模型:

const sequelize = require('./你的sequelize实例路径');
const { DataTypes } = require('sequelize');
const User = require('../models/user')(sequelize, DataTypes);

补充说明

  • findAll()支持添加过滤、排序、分页等参数,比如只查询管理员用户:
    User.findAll({
      where: { role: 'admin' },
      order: [['username', 'ASC']]
    })
    
  • 查询单条记录可以用findOne()或findByPk(),同样不要用find()。

内容的提问来源于stack exchange,提问作者hidy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:48:29