Данные не сохраняются в MongoDB с помощью функции Mon goose findOneAndUpdate - PullRequest
0 голосов
/ 26 апреля 2020

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

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

Я пытаюсь изменить логическое значение activated на true в базе данных, если у пользователя есть роль.

(код ниже)

При попытке запустить функцию не возникает ошибка, просто ничего не происходит, и изменение не выполняется в базе данных. База данных подключена и работает, а пользователь имеет полные права.

let role = call.message.guild.roles.get('702210416012689478')

            if(!call.message.member.roles.has(role.id))
                return;

            call.client.botLoginData.find( {clientID: call.args[0] }, (err, docs) => {
                if(docs.length === 0)
                    return call.message.channel.send(`Couldn't find a client with that ID.`);

                call.client.botLoginData.findOneAndUpdate( { clientID: call.args[0]}, { activated: true });
                call.message.channel.send(`I have successfully updated that bot. Please allow up to 10 mins to propagate, and then restart the bot.`)
            }).catch(error => {
                call.message.channel.send(error)
            })

Я новичок в Mongoose / Mon go, поэтому, если я делаю что-то не так, пожалуйста, сообщите мне

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Когда @KunalMukherjee ответил, ответ на этот вопрос будет ниже

const query = { clientID: call.args[0] }; 
const update = { $set: { activated: true } }; // Return updated document 
const options = { new: true }; 
call.client.botLoginData.findOneAndUpdate(query, update, options, (err, doc) => { all.message.channel.send('I have successfully updated that bot. Please allow up to 10 mins to propagate, and then restart the bot.'); });

Если у кого-нибудь есть какие-либо предложения, пожалуйста, дайте мне знать! Спасибо за помощь! :)

0 голосов
/ 26 апреля 2020

Вам необходимо добавить $ set с объектом обновления следующим образом:

call.client.botLoginData.findOneAndUpdate( { clientID: call.args[0]}, {$set:{ activated: true }}, {new:true});

Чтобы узнать больше о проверке $ set this

...