【问题标题】:is there any object to object Mapper for node.js?node.js 的对象映射器是否有任何对象?
【发布时间】:2021-06-13 00:57:45
【问题描述】:

我希望是否有任何方法可以将我的 API 响应动态映射到节点 js 中的模型类。例如,我有一个使用 sequelize-Auto 动态定义的模型,看起来像这样

return sequelize.define('clients', {
id: {
  type: Sequelize.STRING(255),
  allowNull: false,
  primaryKey: true
},
dateCreated: {
  type: Sequelize.DATE,
  allowNull: true
},
dateModified: {
  type: Sequelize.DATE,
  allowNull: true
},
createdBy: {
  type: Sequelize.STRING(255),
  allowNull: true
},
createdByName: {
  type: Sequelize.STRING(255),
  allowNull: true
},
modifiedBy: {
  type: Sequelize.STRING(255),
  allowNull: true
},
modifiedByName: {
  type: Sequelize.STRING(255),
  allowNull: true
},
c_code: {
  type: Sequelize.TEXT,
  allowNull: true
},
c_name: {
  type: Sequelize.TEXT,
  allowNull: true
},
...
...
...
}

这就是我映射 API 响应的方式,但如果我更改模型(动态发生),我必须手动更新控制器中的字段,如下面的代码所示

 const client = {
    id: req.body.id,
    dateCreated: req.body.dateCreated,
    dateModified: req.body.dateModified,
    createdBy: req.body.createdBy,
    createdByName: req.body.createdByName,
    modifiedBy: req.body.modifiedBy,
    modifiedByName: req.body.modifiedByName,
    c_code: req.body.c_code,
    ...
    ...
    ...

  }; 
models.clients
    .upsert(client);

我希望是否有一种方法可以从res.body 动态提取我的模型对象,例如来自.net 的automapper

【问题讨论】:

    标签: node.js orm model sequelize.js mapper


    【解决方案1】:

    您可能需要创建新的模态实体类,您可以在其中传递 body 对象,并在其构造函数中使用Object.assign,如下代码 sn-p。

    class ClientEntity {
        id;
        dateCreated;
        dateModified;
        createdBy;
    
        constructor(data) {
            Object.assign(this, data);
        }
    }
    
    //assuming below request object
    let req = {
        body: {
            id: 1,
            dateCreated: new Date(),
            dateModified: new Date(),
            createdBy: 'John',
        }
    }
    let client = new ClientEntity(req.body)
    
    console.log(client);

    【讨论】:

    • 如果我的表发生变化,我是否仍会更新我的代码?我想自动化那部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2021-10-23
    • 2017-07-02
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多