ForestAdmin/lumber

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

DeadEye0112 opened this issue ยท 2 comments

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',
    },
  • Lumber Package Version: 3.0.1
  • Database Dialect: postgres
  • Database Version: 10.6

Thanks for you help!

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.

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

Thanks for your answer!