javascript - 如果 Discord.JS 中缺少要查找的字段,我如何为我的 MongoDB 集合添加新字段?
问题描述
如果用户没有配置文件,则列出的最底部字段(“dabmeup”)与其他字段一起正确创建,但当用户已经拥有配置文件时,它不会更新。我如何正确地使代码添加字段而不覆盖该用户已经拥有的内容?下面是我的“message.js”文件的一部分,它检查实际添加的字段。
let profileData;
try {
profileData = await profileModel.findOne({ userID: message.author.id });
if (!profileData) {
let profile = await profileModel.create({
userID: message.author.id,
serverID: message.guild.id,
coins: 1000,
bank: 0,
sent: { type: Number },
received: { type: Number },
owner: { type: Number, default: 0 }, //code: 1
admin: { type: Number, default: 0 }, //code: 1
nyaw: { type: Number, default: 0 }, //code: 2
donator: { type: Number, default: 0 }, //code: 3
dev: { type: Number, default: 0 }, //code: 4
tester: { type: Number, default: 0 }, //code: 4
oneK: { type: Number, default: 0 }, //code: 6
tenK: { type: Number, default: 0 }, //code: 7
hundK: { type: Number, default: 0 }, //code: 8
oneM: { type: Number, default: 0 }, //code: 9
tenM: { type: Number, default: 0 }, //code: 10
hundM: { type: Number, default: 0 }, //code: 11
dabmeup: {type: Number, default: 0} //code: 12
});
profile.save();
}
} catch (err) {
console.log(err);
}
解决方案
在您的模型中,如果它已经定义了默认值 0,那么您不需要添加它create()
并且save()
在修改现有文档时使用提交。
总之,您的代码应该看起来像
let profileData;
try {
profileData = await profileModel.findOne({ userID: message.author.id });
if (!profileData) {
let profile = await profileModel.create({
userID: message.author.id,
serverID: message.guild.id,
coins: 1000,
bank: 0,
sent: 0,
received: 0,
});
}
} catch (err) {
console.log(err);
}
推荐阅读
- javascript - messages.setBackgroundMessageHandler 未在网络中接收消息
- oracle - SQL Developer 日期显示格式
- c++ - 与 map 一起使用时复制构造函数 const 错误
- sql - 如何使用 group by 函数只取最后两行 postgres
- r - 这段代码中的 bins 函数是什么,我该如何使用它?
- javascript - 如何设置 X 轴和 Y 轴上的衬线?
- f# - 运算符 ==> 和 =?> 是什么?
- sql - 如何将一列的结果组合到另一列
- jenkins - jenkins 从触发的作业中获取结果并在其他阶段使用它
- c# - 如何将对象列表添加到 Combox C#