node.js - 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)
这就是我的文件的样子
解决方案
你可以试试这个
Data.findOneAndUpdate({ userID: user.id },
{ $set: { language: args[2], email: args[1] } },
{ new: true }).exec((err, data) => {
//further response with updated data
});
推荐阅读
- asp.net-mvc - 显示名称的数据注释未以 Razor 形式呈现
- python - 二进制编码(类似于 one-hot 编码),但在单个列和行中允许多个值
- python - Socks5 代理线程
- reactjs - 在子位置运行时反应脚本父文件夹node_modules错误
- html - Flex 方向行,其内容居中
- apache-kafka - 消费者组没有活跃成员 - Kafka
- docker - 仅来自基本映像的入口点的 Dockerfile
- xpath - 尝试使用 Google 表格和 importxml() 提取文本时出错
- javascript - Google reCaptcha Javascript 验证
- html - 在页面底部显示页脚