Sequelize find函数对接PostgreSQL无返回无报错问题求助
解决Sequelize find函数无响应的问题
检查Sequelize版本与方法可用性
旧版Sequelize的find方法在v4及以后版本已被废弃,建议替换为findOne(查询单条数据)或findAll(查询多条数据)。若坚持使用旧语法,需确认当前Sequelize版本是否支持find,否则会导致Promise无法正常触发。修正查询操作符写法
新版Sequelize(v4+)中,操作符需从Sequelize.Op导入,不再支持$between这类简写。正确写法如下:const { Op } = require('sequelize'); let data = { where: { created_at: { [Op.between]: ['2023-09-08 00:00:00', '2023-09-09 00:00:00'] } } }; // 替换为findOne或findAll return Location.findOne(data) .then(result => { console.log(result); return result; }) .catch(err => { console.log(err); throw err; });确保Promise被正确处理
调用该查询函数的代码必须正确处理返回的Promise:要么在async函数中使用await,要么链式调用.then()。若仅直接调用函数而不处理Promise,代码会异步执行但不会触发控制台输出,表现为“无响应”。示例:// 正确调用方式(async函数内) async function fetchLocationData() { try { const result = await yourQueryFunction(); console.log('查询结果:', result); } catch (err) { console.error('查询错误:', err); } } fetchLocationData();验证字段名与数据库一致性
检查Location模型中定义的created_at字段是否与数据库表中的字段名完全匹配。若模型使用驼峰命名(如createdAt)且未配置underscored: true,Sequelize会自动转换为下划线命名,但手动指定字段名时需确保完全一致。开启Sequelize日志排查SQL
在Sequelize初始化时开启日志,查看实际执行的SQL语句,确认查询条件是否正确:const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'postgres', logging: console.log // 输出执行的SQL语句 });将日志中的SQL直接在PostgreSQL客户端执行,验证是否有返回结果,以此区分是代码逻辑问题还是数据本身无匹配结果。
内容的提问来源于stack exchange,提问作者Prerna Jain
相关产品推荐
相关产品推荐

