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

如何在Sequelize Typescript v6中获取模型属性列表?

解决Sequelize TypeScript v6获取模型属性名称列表的问题
  • 直接通过模型的rawAttributes静态属性获取,这是Sequelize内置的存储模型属性定义的对象,键就是属性名称,用Object.keys()提取即可:

    const attributeNames = Object.keys(MyModel.rawAttributes);
    // 输出示例: ["col0Name", "col1Name", ...]
    
  • 如果需要过滤掉Sequelize自动添加的默认属性(比如id、createdAt、updatedAt这类字段),可以手动筛选:

    const excludeDefaults = ['id', 'createdAt', 'updatedAt'];
    const customAttributeNames = Object.keys(MyModel.rawAttributes).filter(name => !excludeDefaults.includes(name));
    

为什么你之前的方法行不通:

  • Attributes<MyModel>是TypeScript的类型工具,仅用于类型标注和编译时检查,不能在运行时作为值使用,所以会抛出类型错误。
  • attributes()是Sequelize查询构建器的方法(比如Model.findAll({ attributes: [...] })),不是用于获取模型属性列表的全局函数。
  • MyModel.attributes并非Sequelize模型的内置属性,正确存储属性定义的是rawAttributes。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:50:50