【问题标题】:Delete property from object in argument vs Delete property from object从参数中的对象中删除属性与从对象中删除属性
【发布时间】: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


【解决方案1】:

也许有人会觉得它有用。

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

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

原因如下:

链接到适当的问题和答案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-11
    • 2018-05-10
    • 2010-09-17
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多