gpt4 book ai didi

node.js - 如果特定公会不存在,则会出现数据库错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:10 24 4
gpt4 key购买 nike

我的不和谐机器人上有每个公会的设置。但是,由于某种原因,如果公会不存在,则会出现错误。我的机器人所在的公会超过 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 个旧的;-;

最佳答案

如果我理解正确的话,问题就出在这里:返回等待data.updateOne(settings);

  1. data 应该是一个实际的 collection/model 并且根据 let data = wait client.getGuild(guild); 它应该返回一个模型,但我 99% 确信它不是。好吧,我不知道 client.getGuild 做了什么,所以..这就是为什么我确信只适用于 99%
  2. 问题的第二个向量就在这里,settings 对象应该等于这些模式:{filter_field: value},{update_field: value},{upsert:true} 结果:
... = await model_name.updateOne({filter: value},{update: field},{upsert:true}).exec(callback)

如果您愿意,还可以:

I need the updateGuild function to run the createGuild function if there is no database entry

我猜里面的updateGuild应该看起来像这样,没有createGuild方法:

let result = await model_name.findOneAndUpdate(
{
fieldName: filterValue,
},
new Class(object),
{
upsert : true,
new: true,
setDefaultsOnInsert: true,
runValidators: true,
lean: true
}
).exec();

在这种情况下,result 变量已更新文档数据,并且如果成功,可以通过破坏性方法向机器人用户显示一些值。或者直接在 updateGuild 中触发 await createGuild();,如果允许的话,无需使用上面的代码片段。

关于node.js - 如果特定公会不存在,则会出现数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57827986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com