Обновите модель, удалите ее массив и заполните новый массив, используя MongoDB Mongoose - PullRequest
0 голосов
/ 29 октября 2019

Я хочу попросить совета о том, как лучше всего выполнить следующие действия:

, поэтому, например, у меня есть модель

person :{
  _id: "12312",
  name: "hello",
  phones: [
     { number : "123456" }
  ]
}

, когда я обновляю человекамодель, как и имя: "новое имя", я также хочу очистить массив телефона и заполнить его новым.

Я думал о выполнении findById / findOne (). deleteArray (). populateArray () цепочки.

Каков наилучший путь для его цепочки в Mongoose?

Я полагаю, что удаление массива является самым быстрым, поскольку идентификатор является случайным буквенно-цифровым, а не каким-то увеличивающимся длинным значением, поэтому может также удалитьвсе и воссоздать массив

мысли?

Это моя функция в Express / Mongoose

exports.update = function(req, res) {
    Person.findByIdAndUpdate(req.params.person_id, person, { new: true, runValidators: true }, function(err, person) {
        if (err) res.send(err);
        res.json(person);
    });
};

1 Ответ

1 голос
/ 29 октября 2019

Вы можете установить массив телефонов с пустым массивом с помощью findOneAndUpdate следующим образом:


const newDoc = {
  name: "newname",
  phones: []
}

let doc = await Person.findOneAndUpdate({ name: newDoc.name }, newDoc, {
  new: true
});

console.log(doc);

или, если вы хотите заменить существующие телефоны на новые, вы можете использовать такой объект:

const newDoc = {
  name: "newname",
  phones: ["1","2"]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...