Home > Back-end >  Sequelize included Model result keys are strings
Sequelize included Model result keys are strings

Time:04-06

Forgive my limited knowledge im about a week into using Sequelize,

 Models.PlannerModel.Builds.findAll({
      raw: true,
      where: {
        ProposedDelivery: { [Op.gt]: moment().format("YYYY-MM-DD") },
        description: { [Op.ne]: null },
        description: { [Op.ne]: " " },
        description: { [Op.not]: null },
      },
      include: [
        {
          model: Models.PlannerModel.Unit,
          required: true
        },
      ],

the result from the above is as you would expect except all the keys for the fields in the includes are as strings so referencing them in my Pug template/class has to be done with brackets

overall not the end of the world just wondering if im doing something wrong ?

Cheers!

CodePudding user response:

Turn off raw to get nested model objects and also to get plain objects use get({ plain: true}) for each returned model instance:

 const builds = await Models.PlannerModel.Builds.findAll({
      where: {
        ProposedDelivery: { [Op.gt]: moment().format("YYYY-MM-DD") },
        [Op.and]: [{
          description: { [Op.ne]: null },
        }, {
          description: { [Op.ne]: " " },
        }, {
          description: { [Op.not]: null },
        }
        ]
      },
      include: [
        {
          model: Models.PlannerModel.Unit,
          required: true
        },
      ]
 })
 const plainBuilds = builds.map(x => x.get({ plain: true }))

Please pay attention that I changed conditions with description. In your version of conditions only the last one will work because JS saves only the last key if there are several same keys in the same object.

  • Related