【问题标题】:How to Improve Assignment Code in Node.js (ES6 style)如何改进 Node.js 中的赋值代码(ES6 风格)
【发布时间】:2019-03-02 03:40:27
【问题描述】:

有没有办法改进这段代码?使用 ES6 风格,我正在使用最新的稳定版本的 node.js。

const UserSchema = new mongoose.Schema({
date: string;
dateObj: {
    year: number,
    month: number,
    day: number
};
project: string;
task: string;
hours: number;
});

let data = new Data();
data.date = new Date(body.date);
    data.dateObj = {
        year: body.dateObj.year,
        month: body.dateObj.month,
        day: body.dateObj.day
    }
    data.project = body.project;
    data.task = body.task;
    data.hours = body.hours;
}

【问题讨论】:

  • 什么是Data?请同时添加缺失的部分。
  • 旁注:仅供参考,而“assignation”是一个英文单词,它不是你想要的那个。 :-) (“任务”是一次秘密会议,通常是情侣聚会。)您可能希望在那里进行“任务”。
  • @T.J.Crowder 谢谢 :-)
  • @T.J.Crowder 可能不是,很多人提到 body 对象 ;-)
  • @DarrenSweeney - 我主要是尽量避免物化身体。 ;-)

标签: javascript node.js mongoose ecmascript-6 mongoose-schema


【解决方案1】:
    let data = Object.assign({},
    { dateObj:{
          year: body.dateObj.year,
          month: body.dateObj.month,
          day: body.dateObj.day
         }, 
     project: body.project,
     task: body.task,
     hours: body.hours,
     new Data() 
    })

你可以使用object.assign

【讨论】:

  • 代码转储不是有用的答案。说出你做了什么,更重要的是,为什么
【解决方案2】:

考虑到Data是Mongoose模型,可以从对象中提取属性并通过构造函数document argument分配给模型实例:

const date = new Date(body.date);
const { year, month, day } = body.dateObj;
const { project, task, hours } = body;

let data = new Data({
  date,
  dateObj: { year, month, day },
  project, task, hours 
});

可能不需要选择body.dateObj 属性。

【讨论】:

    【解决方案3】:

    您可以使用 es6 结构的组合,例如解构和扩展。看看下面的sn-p。

    let data = new Data();
    const {date, dateObj, project, task, hours} = body;
    data = {
        date: new Date(date),
        dateObj: {...dateObj},
        project,
        task,
        hours
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-05-15
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      相关资源
      最近更新 更多