首页 > 解决方案 > mongoose.updateOne() 总是更新第一个文档

问题描述

我正在为一个不和谐的机器人创建一个命令,我想在其中编辑文档中的用户信息。该命令看起来像这样!edit @tag email language,但是不管我对谁执行 ping 操作,它总是会更改 MongoDB 中的第一个文档。

let user = message.mentions.users.first()

Data.findOne({
     userID: user.id,
}, (err, data) => {
    if (err) return console.log(err);

    if (!data) {
         return message.reply("That user isn't in list")
    } else {
         Data.updateOne({
             language: args[2],
             email: args[1]
         }, (err) => {
             if (err) throw err;
             let embed = new Discord.MessageEmbed()
                    .addField("Name", data.name);
                message.channel.send(embed)
            })
        }

数据.js

const mongoose = require("mongoose");

const dataSchema = mongoose.Schema({
    name: String,
    language: String,
    email: String,
    userID: String,
    lb: String,
    usage: Number
})

module.exports = mongoose.model(`Data`, dataSchema)

这就是我的文件的样子

这就是我的文件的样子

标签: node.jsdatabasemongodbmongoosediscord.js

解决方案


你可以试试这个

Data.findOneAndUpdate({ userID: user.id },
  { $set: { language: args[2], email: args[1] } },
  { new: true }).exec((err, data) => {
     //further response with updated data
});

推荐阅读