【发布时间】:2021-02-18 18:39:18
【问题描述】:
只是想弄清楚一些问题。
context:randomFunction 是一个接受 2 个参数(id 和 metaData)的函数。它是在控制器内部调用的。代码如下:
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
}
上下文: 我想删除 MetaData 的 _id 属性以将其传递给猫鼬中的 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)中重现相同的东西时,我无法重现。 (它也在从参数中删除属性。)。
【问题讨论】:
-
你还没有问任何问题。
-
无法重现,两者都按我的预期记录(“性别”属性已删除)
-
是的,在控制台中,两者都按预期记录,所以即使我也无法重现。将重新提出我的问题。
-
我无法重现该问题。您如何设置元数据的初始值?
-
我已经重新构建了问题并添加了节点 js 标签。我也无法在控制台中重现它。 MetaData 是一个由 findById() 得到的 mongodb 的 Document。谢谢大家的回复。
标签: javascript node.js mongoose