如何在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
相关产品推荐
相关产品推荐

