как получить значение pu sh в свойстве объекта динамически в mon goose? - PullRequest
3 голосов
/ 12 июля 2020

Я хочу поместить sh значение в массив на основе значения свойства, полученного от внешнего интерфейса с использованием mon goose.

Схема:

authencity: {
        fake: [],
        notSure: [],
        authentic: [],
      }

Теперь я хочу pu sh значение в массиве на основе значения свойства, полученного из внешнего интерфейса.

const result = await News.findOneAndUpdate({ name: newsName }, { $push: { `authencity[${authencityType}]`: email } });

authencityType может быть чем угодно вроде fake, notSure, authenti c на основе этого значения. Я хочу вставить значение в соответствующий массив.

Пример данных:

Sample Document :{
    "_id": {
        "$oid": "5f0af1e09a724b06c86bfaec"
    },
    "authencity": {
        "fake": [],
        "notSure": [],
        "authentic": []
    },
    "name": "Rajasthan deputy CM Sachin Pilot\u2019s supporters come to Gurugram resort, call police summon a joke",
    "description": "",
    "url": "https://news.google.com/__i/rss/rd/articles/CBMiqwFodHRwczovL3d3dy5oaW5kdXN0YW50aW1lcy5jb20vaW5kaWEtbmV3cy9yYWphc3RoYW4tZGVwdXR5LWNtLXNhY2hpbi1waWxvdC1zLXN1cHBvcnRlcnMtY29tZS10by1ndXJ1Z3JhbS1yZXNvcnQtY2FsbC1wb2xpY2Utc3VtbW9uLWEtam9rZS9zdG9yeS1ZQ1BQVDFlandtb1RoQXJaRXVabmNOLmh0bWzSAa0BaHR0cHM6Ly9tLmhpbmR1c3RhbnRpbWVzLmNvbS9pbmRpYS1uZXdzL3JhamFzdGhhbi1kZXB1dHktY20tc2FjaGluLXBpbG90LXMtc3VwcG9ydGVycy1jb21lLXRvLWd1cnVncmFtLXJlc29ydC1jYWxsLXBvbGljZS1zdW1tb24tYS1qb2tlL3N0b3J5LVlDUFBUMWVqd21vVGhBclpFdVpuY05fYW1wLmh0bWw?oc=5",
    "category": "general",
    "language": "en",
    "country": "in",
    "__v": 0
}

Полученные данные: электронная почта: abcd@gmail.com authencityType может быть поддельным или нет. значение в конкретном массиве c на основе полученного authencityType

Ответы [ 2 ]

2 голосов
/ 12 июля 2020

Вам необходимо указать свой путь, используя точечную нотацию вместо квадратных скобок:

`authencity.${authencityType}`

Например, authenticity.fake

попробуйте:

const result = await News.findOneAndUpdate({ name: newsName }, { $push: { `authencity.${authencityType}`: email } }, { new: true });

Также обратите внимание, что в версии findOneAndUpdate mon goose вам необходимо передать параметр new: true , чтобы вернуть измененный документ

0 голосов
/ 12 июля 2020
const newColumn = `authencity.${authencityType}`;

const result = await News.findOneAndUpdate({ name: newsName }, { $push: { [newColumn]: email } }, { new: true });

Здесь я создал динамическую c строку для создания имени столбца с использованием литерала шаблона, а затем заключил его в [], поэтому mon go будет считать это имя столбца

...