从实参中删除对象的属性vs从对象中删除属性



只是想弄清楚一些问题。

context: randomFunction是一个接受两个参数的函数(id &元数据)。它是控制器内部的一个调用。代码如下:

await randomFunction(id, doc);

doc包含一个对象(基本上是mongodb中的一个文档)。假设doc包含以下内容:

{
_id: "123456789012345678901234",
age: 30,
name: 'Lorem Ipsum',
gender: 'male'
}

现在,在初始化randomFunction的操作文件中

const randomFunction = async (id, metaData) => {
console.log(metaData) // prints metaData
delete metaData._id
console.log(metaData) // still prints metaData without deleting _id property
//code below
}

背景:我想删除元数据的_id属性,将其传递给mongoose中的findOneAndUpdate()函数。但是我不能成功地删除_id属性。所以我创建了数据对象并传递给它。

const randomFunction = async (id, metaData) => {
const data = {
name: metaData.name,
age: metaData.age,
gender: metaData.gender
}
//code below
}

它工作。

然后我测试和控制台记录了一些东西。

const randomFunction = async (id, metaData) => {
console.log(metaData) // prints metaData
delete metaData._id
console.log(metaData) // still prints metaData without deleting _id property
const data = {
_id: metaData._id,
name: metaData.name,
age: metaData.age,
gender: metaData.gender
}
console.log(data) // prints data object
delete data._id
console.log(data) // prints data with deleting _id property
//code below
}

那么,为什么我不能在MetaData中删除_id,但可以在Data中删除_id呢?

当我试图在javascript控制台(chrome)中复制相同的东西时,我无法复制。(它也从参数中删除属性).

也许有人会觉得有用。

答案是猫鼬文档是不可变的。

我们需要将mongoose对象转换为javascript对象。

原因如下:

链接到相应的问答:

https://stackoverflow.com/a/13350500/14619863

相关内容

  • 没有找到相关文章

最新更新