在续集更新父项时如何更新子项记录?

时间:2020-08-15 20:23:59

标签: node.js sequelize.js

我进行了以下设置,与公司和员工建立了一对多的关系。示例data.json请求文件如下。当有更新请求时,我想在同一呼叫中更新公司信息和所有子雇员信息。目前,我只更新公司信息,但是如何更新员工?

文件-data.json

{
companyName : abc
employee : [
 {employee1 ...}, 
 {employee2....}
]
}

控制器

 static async update(id, company) {
    try {
      return await models.Company.update({ where: { id: Number(id) }});

      //how to update employee records here??

    } catch (error) {
      throw error;
    }
  }

Company.model.js

module.exports = (sequelize, Sequelize) => {
    const Company = sequelize.define('company', {
      uuid: {
        type: Sequelize.UUID,
        defaultValue: Sequelize.UUIDV1,
        primaryKey: true
      },
      name: {
          type: Sequelize.STRING
      },
      street: {
          type: Sequelize.STRING
      },
      phone: {
          type: Sequelize.STRING
      }
    });
    
    return Company;
}

Employee.model.js

module.exports = (sequelize, Sequelize) => {
    const Employee= sequelize.define('employee', {
      id: {
          type: Sequelize.STRING
      },
      name: {
          type: Sequelize.STRING
      }
    });
    
    return Employee;
}

db.config.js

const env = require('./env.js');

const Sequelize = require('sequelize');
const sequelize = new Sequelize(env.database, env.username, env.password, {
  host: env.host,
  dialect: env.dialect,
  operatorsAliases: false,

  pool: {
    max: env.max,
    min: env.pool.min,
    acquire: env.pool.acquire,
    idle: env.pool.idle
  }
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.company = require('../model/company.model.js')(sequelize, Sequelize);
db.Employee = require('../model/Employee.model.js')(sequelize, Sequelize);

// Here we can connect companies and products base on company'id
db.company.hasMany(db.product, {foreignKey: 'fk_companyid', sourceKey: 'uuid'});
db.employee.belongsTo(db.company, {foreignKey: 'fk_companyid', targetKey: 'uuid'});

module.exports = db;

0 个答案:

没有答案