Mongoose запрашивает массив ... изменяет элементы массива - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь удалить все элементы из массива в базе данных MongoDB, затем вставляю все новые элементы массива.

Моя модель:

 const mongoose = require('mongoose');
var schema = new mongoose.Schema({
    email : {
        type : String
    },
    password : {
        type : String
    },
    stocks : {
        type : [String]
    }
}, {versionKey:false}, {_id: false});
module.exports =  final = mongoose.model('users', schema);

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

final
  .findOneAndUpdate({email:"abcd@gmail.com"}, {$set:{stocks:[]}})
  .then(()=>console.log("Data removed."))
  .catch(err=>console.log(err));

Как только данные удалены, это означает, что массив будет очищен. Затем я назначаю весь набор нового массива из моей локальной переменной следующим образом:

const newData = {
  stocks : ["abcd", "wxyz"]
};

Теперь я пытаюсь присвоить этот новый массив моей базе данных с помощью этой команды:

final
  .findOneAndUpdate({email:"abcd@gmail.com"}, {$set:{stocks:newData.stocks}});

Он успешно очищает массив, но когда я присваиваю новый массив, он не работает и показывает пустой массив. Может ли кто-нибудь помочь мне с этим, пожалуйста?

1 Ответ

1 голос
/ 19 марта 2019

Попробуйте с

final.findOneAndUpdate({email:"abcd@gmail.com"}, {$set:{stocks:newData.stocks}}, {new: true})
    .then((doc)=>console.log(doc))
    .catch(err=>console.log(err));

Если вы не используете обратный вызов, запрос не выполняется.

Запрос выполняется, если передан обратный вызов, иначе возвращается объект Query. Мангуст документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...