ForestAdmin / lumber

Install Forest Admin in minutes.
https://www.forestadmin.com
MIT License
2.08k stars 106 forks source link

Column name with a 0 generate an invalid column name in query #369

Open DeadEye0112 opened 4 years ago

DeadEye0112 commented 4 years ago

Expected behavior

Expected to be able to click on my table in Forest Admin and see the contents of the table.

Actual behavior

Having the message "Oops, something went wrong".

Failure Logs

[forest] 🌳🌳🌳  Unexpected error: column ratings.criteria0_grade does not exist
SequelizeDatabaseError: column ratings.criteria0_grade does not exist

Context

I have a table named ratings having several columns named like this: criteria_0_grade, criteria_1_grade, etc... For an unknown reason, Lumber seems to map these columns to criteria0_grade triggering a column ratings.criteria0_grade does not exist error. The problem seems to exist only with the two columns name criteria_0_*.

In models/ratings.js, only the columns with a 0 does not have a field field:

    criteria0Grade: {
      type: DataTypes.INTEGER,
    },
    criteria0Comment: {
      type: DataTypes.STRING,
    },
    criteria1Grade: {
      type: DataTypes.INTEGER,
      field: 'criteria_1_grade',
    },
    criteria1Comment: {
      type: DataTypes.STRING,
      field: 'criteria_1_comment',
    },
    criteria2Grade: {
      type: DataTypes.INTEGER,
      field: 'criteria_2_grade',
    },

Thanks for you help!

arnaudbesnier commented 4 years ago

Hi @DeadEye0112, Thanks for your feedback. It definitely looks like a bug.

As a workaround could you edit your criteria0Grade and criteria0Comment fields, like this:

criteria0Grade: {
  type: DataTypes.INTEGER,
  field: 'criteria_0_grade' // define the name of your table column
},
criteria0Comment: {
  type: DataTypes.STRING,
  field: 'criteria_0_comment' // define the name of your table column
},

Hope it will help.

DeadEye0112 commented 4 years ago

I confirm that the workaround works, I hope that the fix will not disappear on update.

Thanks for your answer!