【发布时间】:2020-01-09 16:25:36
【问题描述】:
我的 discord 机器人上有每个公会的设置。但是,由于某种原因,如果公会不存在,则会出错。我的机器人所在的公会超过 150 个,而且这是最近才添加的。我不知道该怎么做才能让它工作......
如果数据为空,我尝试了不同的调用方法,但我总是收到错误并最终得到这段原始代码
client.updateGuild = async (guild, settings) => {
let data = await client.getGuild(guild);
if (typeof data !== 'object') data = {};
for (const key in settings) {
if (data[key] !== settings[key]) data[key] = settings[key];
else return;
}
console.log(`Guild "${data.guildName}" updated settings: ${Object.keys(settings)}`);
return await data.updateOne(settings);
};
如果公会不存在,它应该为公会创建一个新条目并在有人运行配置命令时保存更新的配置设置
client.createGuild = async settings => {
const defaults = Object.assign({ _id: mongoose.Types.ObjectId() }, client.config.defaultSettings);
const merged = Object.assign(defaults, settings);
const newGuild = await new Guild(merged);
return newGuild.save()
.then(console.log(`Default settings saved for guild "${merged.guildName}" (${merged.guildID})`));
};
这是更新后添加到公会时运行的命令,但就像我说的那样有超过150个旧的;-;
【问题讨论】:
-
您是否尝试添加
updateOne{upsert:true}的选项?根据mongoosedocs (mongoosejs.com/docs/api/model.html#model_Model.updateOne) 默认为false,如果不存在,它允许在数据库中创建新文档。 -
不,我没有。我什至没有看到。我现在就试试!
-
(node:19704) UnhandledPromiseRejectionWarning: TypeError: data.updateOne is not a function -
return await data.updateOne(settings, {upsert:true});
-
我需要它来运行 client.createGuild 并使用该 ^^' 中的设置
标签: node.js mongodb discord.js