首页 > 解决方案 > 无法使用 Sequelize update 执行更新

问题描述

所以我尝试使用employeeId 更新我的表EmployeeProjectRatings。我使用 Sequelize 执行更新操作。我收到错误 TypeError: Expecting an array or an iterable object but got [object Null]

这是我的 updatEmployeesById 处理程序:

    try {
      const { employeeId } = req.params;
      const employeeData = {
        employee: {},
        employeeRatings: {},
      };
      employee = await models.Employee.findOne({
        attributes: ["id", "firstName", "lastName"],
        where: {
          id: employeeId,
        },
      });
      employeeData.employee = employee;
      console.log(employeeId);

      console.log(req.inputs.Communication);

      const [num, rows]= await models.EmployeeProjectRating.update(
        {
          Communication: req.inputs.Communication,
        },

        {
          where: {
            employeeId,
          },
          returning: true,
        }
      );
      console.log(num);
      console.log(rows);
       
      // const ratings= await models.EmployeeProjectRating.findOne({
      //   where:{
      //     employeeId
      //   }
      // })
      // console.log(ratings);

      // employeeData.employeeRatings = employeeRatings;
      return res.status(200).json({
        employeeData,
      });
    } catch (error) {
      console.log(error);
    }
  };

这是我在邮递员中传递的 json 对象:

{
    "Communication": 1
}

这是我的模型文件:

module.exports = (Sequelize, sequelize, models) => {
  const EmployeeProjectsRating = sequelize.define(
    'employee_project_rating', {
      PMQuality: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      PMOwnership: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      PMSkill: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      PMEthics: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      PMEfficiency: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      PMFreeze: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      archFreeze: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      PMComment: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.STRING,
        },
      },
      archQuality: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      archOwnership: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      archSkill: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      archEthics: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      archEfficiency: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.INTEGER,
        },
      },
      archComment: {
        type: Sequelize.BLOB,
        encrypted: {
          type: Sequelize.STRING,
        },
      },
      Communication:{
        type:Sequelize.INTEGER,
        encrypted:{
          type: Sequelize.INTEGER
        },
        allowNull: true

      }
    },
    {
      timestamps: true, // timestamps will now be true
    },
  );
  models.ProjectCycle.hasMany(EmployeeProjectsRating, { as: 'employeeProjectsRatings' });
  EmployeeProjectsRating.belongsTo(models.ProjectCycle, { as: 'projectCycle' });
  EmployeeProjectsRating.belongsTo(models.Employee, { as: 'employee' });
  EmployeeProjectsRating.belongsTo(models.Employee, { as: 'projectManager' });
  EmployeeProjectsRating.belongsTo(models.Employee, { as: 'projectArchitect' });
  return EmployeeProjectsRating;
};

标签: node.jsexpresssequelize.js

解决方案


推荐阅读