Обновление свойства вложенного объекта mongoose - PullRequest
0 голосов
/ 31 марта 2020

У меня есть база данных, такая как:

enter image description here

Мне нужно обновить свойство: leadType определенного объекта на основе его _id согласно запросу пользователя, скажем, с id: 5e8333cf4f19264d809b4e8c.

Я использовал следующий запрос, но он в итоге возвращает мне пустой массив:

exports.change_lead_action = (req, res, next) => {
  let lead_obj_id = req.body.leadObjId;

  Lead.findOneAndUpdate(
    { _id: mongoose.Types.ObjectId(lead_obj_id) },
    { leads: { $elemMatch: { _id: req.body.leadId }}}, {leadType: req.body.leadType}, (err, lead) => {
      console.log('updated', lead)
    }
  )

Я не уверен, где я ошибаюсь.

Я также пытался использовать запрос Lead.find(). Хотя это вернуло мне требуемый результат, но я не смог найти способ обновить свойство из возвращенного результата:

{
    "message": "data found",
    "lead": [
        {
            "_id": "5e8333cf4f19264d809b4e8e",
            "leads": [
                {
                    "education": {
                        "school": "happy kids corner",
                        "graduation": "some school"
                    },
                    "currentPosition": {
                        "title": "Salesforce developer",
                        "description": "Full stack programmer",
                        "joiningDate": "16 december 2019",
                        "endDate": "currently working",
                        "employmentType": "full-time",
                        "industry": "information technology"
                    },
                    "location": {
                        "state": "delhi",
                        "country": "india"
                    },
                    "leadType": "all",
                    "name": "Ben",
                    "mobile": 1524524678,
                    "_id": "5e8333cf4f19264d809b4e8c"
                }
            ]
        }
    ]
}

Пожалуйста, помогите решить эту проблему.

1 Ответ

0 голосов
/ 31 марта 2020

Синтаксис вашего запроса неверен. Вот документы для Пн goose findOneAndUpdate .

По их словам, первый параметр - это запрос, второй - команда обновления.

Так что вам нужно структурировать это как:

  Lead.findOneAndUpdate(
    {
       _id: mongoose.Types.ObjectId(lead_obj_id),
       leads: { $elemMatch: { _id: req.body.leadId }}
    },
    {leadType: req.body.leadType}, (err, lead) => {
      console.log('updated', lead)
    }
...