Jen se snažím přijít na nějaké otázky.
kontext:randomFunction je funkce, která přebírá 2 argumenty (id &metaData). Je to volání uvnitř ovladače. Kód je uveden níže:
await randomFunction(id, doc);
doc obsahuje objekt (v podstatě dokument v mongodb). Předpokládejme, že doc obsahuje následující:
{ _id: "123456789012345678901234", age: 30, name: 'Lorem Ipsum', gender: 'male' }
Nyní v operačním souboru, kde je inicializována 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 }
context:Chtěl jsem odstranit vlastnost _id MetaData a předat ji funkci findOneAndUpdate() v mongooose. Nepodařilo se mi však smazat vlastnost _id. Vytvořil jsem tedy datový objekt a předal jej.
const randomFunction = async (id, metaData) => { const data = { name: metaData.name, age: metaData.age, gender: metaData.gender } //code below }
Fungovalo to.
Poté jsem otestoval a konzole zaprotokoloval několik věcí.
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 }
Jaký je tedy důvod, proč jsem nemohl odstranit _id v MetaDatech, ale mohl jsem mít možnost _id v Data.
Když jsem se snažil reprodukovat totéž v konzoli javascript (chrome), nebyl jsem schopen reprodukovat. (také maže vlastnosti z argumentů.).
Odpověď
Možná se to někomu bude hodit.
Odpověď je, že mongoose dokumenty jsou neměnné.
Potřebujeme převést objekt mongoose na objekt javascript.
Důvod je následující:
Odkaz na příslušnou otázku a odpověď:
https://stackoverflow.com/a/13350500/14619863