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

时间:2018-10-31 13:29:20

标签: javascript object

在向用户发送最终文档之前,我想有效地将​​属性(即对象)添加到文档(也是对象)中。

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

为此,我尝试像这样使用Object.assign

if (doc) {
  const appendedDoc = Object.assign({ activeStatus: doc.history.slice(-1)[0] }, doc);
  doc = appendedDoc;
} 
res.send(doc);

但是我最终在最终文档中得到了额外的元数据-包括吸气剂,严格模式状态等。

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

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

{
    "_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"
    }
}

1 个答案:

答案 0 :(得分:1)

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

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