javascript Sequelize -如何列出/查看现有模型的所有列

gpnt7bae  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(179)

我知道一个简单的答案可能是返回所有属性的查询表。
但是,由于模型是在代码中定义的,我想知道不查询数据库是否可以得到结果,或者如果需要查询,那么哪个查询是优化的?
顺便说一句,我正在使用续集V5Mysql 5.7

oug3syen

oug3syen1#

可以迭代Model类的rawAttributes

for( let key in Model.rawAttributes ){
    console.log('Field Name: ', key); // this is name of the field
    console.log('Field Type: ', Model.rawAttributes[key].type.key); // Sequelize type of field
}

rawAttributeskeys 是字段名,即列名;rawAttributes的 * 值 * 是这些列的Sequelize定义,包括init/define方法中解释的属性,例如typeallowNulldefaultValueunique等。
记住在create any associationsModel上的任何其他设置(Model.hasOne()Model.belongsTo()Model.associate() function中的任何内容)之后选中rawAttributes,否则属性对象将不包括外键列
旁注,在Sequelize v4中,Model.attributes===Model.rawAttributes,所以它们是同一个东西的别名。
在Sequelize v6+中,您可以使用Model.getAttributes(),这在文档中有说明

ttcibm8c

ttcibm8c2#

似乎每个模型都有一个属性“rawAttributes”,它包含了所有的列名。这可能不是官方的方式,但它可以解决我的问题。

7nbnzgx9

7nbnzgx93#

你也可以用这个作为答案:

for( let key of Object.keys(models.Modelname.attributes))   {
      columns.push({
          name:key,
          type:models.Modelname.attributes[key].type.key
      });
}

相关问题