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



在将最终文档作为响应发送给用户之前,我想有效地将一个属性(即对象(添加到文档(也是对象(中。

我要添加的新属性基本上取一个名为"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": <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"
}
}

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

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

最新更新