在JavaScript中将对象附加到另一个对象时避免元数据

在JavaScript中将对象附加到另一个对象时避免元数据,javascript,object,Javascript,Object,在向用户发送响应中的最终文档之前,我希望有效地向文档(也是对象)添加一个属性,它是一个对象 我想添加的新属性基本上是一个名为“history”的数组中的最后一个对象,它位于文档的根,并将其填充到一个名为“activeStatus”的属性中,该属性也位于文档的根 为此,我尝试使用Object.assign如下: if (doc) { const appendedDoc = Object.assign({ activeStatus: doc.history.slice(-1)[0] }, doc

在向用户发送响应中的最终文档之前,我希望有效地向文档(也是对象)添加一个属性,它是一个对象

我想添加的新属性基本上是一个名为“history”的数组中的最后一个对象,它位于文档的根,并将其填充到一个名为“activeStatus”的属性中,该属性也位于文档的根

为此,我尝试使用
Object.assign
如下:

if (doc) {
  const appendedDoc = Object.assign({ activeStatus: doc.history.slice(-1)[0] }, doc);
  doc = appendedDoc;
} 
res.send(doc);
但最终我的最终文档中会有额外的元数据——包括getter、严格模式状态等

我如何才能以返回我想要的干净文档的方式来执行此操作

顺便说一下,我的初始文档如下所示:

{
    "_id": <id value>,
    "type": "permanent",
    "gender": "female",
    "history": [
        {
            "endDate": "2018-10-31T12:27:17.721Z",
            "stage": "training",
            "completed": true,
            "startDate": "2018-10-30T13:41:18.714Z"
        },
        {
            "stage": "active",
            "completed": false,
            "startDate": "2018-10-31T12:27:17.572Z"
        }
    ]
}
{
“_id”:,
“类型”:“永久”,
“性别”:“女性”,
“历史”:[
{
“结束日期”:“2018-10-31T12:27:17.721Z”,
“阶段”:“培训”,
“完成”:正确,
“起始日期”:“2018-10-30T13:41:18.714Z”
},
{
“阶段”:“活动”,
“已完成”:错误,
“开始日期”:“2018-10-31T12:27:17.572Z”
}
]
}
这是我想制作的文件:

{
    "_id": <id value>,
    "type": "permanent",
    "gender": "female",
    "history": [
        {
            "endDate": "2018-10-31T12:27:17.721Z",
            "stage": "training",
            "completed": true,
            "startDate": "2018-10-30T13:41:18.714Z"
        },
        {
            "stage": "employed",
            "completed": false,
            "startDate": "2018-10-31T12:27:17.572Z"
        }
    ],
    "activeStatus": {
            "stage": "employed",
            "completed": false,
            "startDate": "2018-10-31T12:27:17.572Z"
    }
}
{
“_id”:,
“类型”:“永久”,
“性别”:“女性”,
“历史”:[
{
“结束日期”:“2018-10-31T12:27:17.721Z”,
“阶段”:“培训”,
“完成”:正确,
“起始日期”:“2018-10-30T13:41:18.714Z”
},
{
“阶段”:“雇佣”,
“已完成”:错误,
“开始日期”:“2018-10-31T12:27:17.572Z”
}
],
“活动状态”:{
“阶段”:“雇佣”,
“已完成”:错误,
“开始日期”:“2018-10-31T12:27:17.572Z”
}
}

您可以序列化+反序列化以仅获取常规属性:

 if (doc) {
   doc = Object.assign({ activeStatus: doc.history.slice(-1)[0] }, JSON.parse(JSON.stringify(doc)));
 }

美丽的这正是我想要的。非常感谢,乔纳斯!