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

使用$get结合预加载时Sequelize-typescript查询无限等待

问题:Sequelize $get方法添加include后Promise无响应

我尝试在Sequelize对象上结合使用$get方法与预加载:

await user?.$get("following", {
    order: [["name", "ASC"]],
    limit: USERS_PER_PAGE,
    offset: (page - 1) * USERS_PER_PAGE,
    where,
    include: Gym
}

原本查询运行正常,但添加include参数后,Promise既不解析也不抛出错误。用户与Gym模型通过Gym中的外键存在一对一关联,使用findOne和findMany方法时包含Gym是正常的。想确认是操作有误还是Sequelize-typescript存在问题?


解决方案

  • 修复语法错误:你的代码末尾缺失了闭合括号),这会导致代码无法正确执行,甚至出现Promise挂起的情况。修正后代码:
await user?.$get("following", {
    order: [["name", "ASC"]],
    limit: USERS_PER_PAGE,
    offset: (page - 1) * USERS_PER_PAGE,
    where,
    include: Gym
})
  • 确保include关联正确:$get("following")是获取当前用户关注的用户列表,因此include需要关联到**关注用户(User模型)**对应的Gym关联,而非当前用户的Gym关联。如果User与Gym的关联定义了别名(比如User.hasOne(Gym, { as: 'gymProfile' })),需要在include中指定别名:
include: { model: Gym, as: 'gymProfile' }
  • 排查SQL执行问题:启用Sequelize日志功能,查看生成的SQL语句,手动执行验证是否存在查询异常:
// 在Sequelize实例初始化时添加日志配置
const sequelize = new Sequelize({
  // 其他数据库配置
  logging: console.log
});
  • 检查Sequelize-Typescript类型定义:确保关联模型的类型定义正确,避免因类型推断问题导致的查询异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:22:09