DJS MongoDB 仅更新第一个文档
DJS MongoDB Only Updating First Document
当使用我的一个命令更新公会文件时,它只更新顶级公会文件而不是它被发送的公会,这里有一张图片来进一步解释它:
我想制作它以便它在它被发送的行会中更新,这是我所拥有的。
代码:
run: async (interaction, client) => {
let data = await guildSchema.findOne({
id: interaction.guild.id
});
// Command:
await guildSchema.findOneAndUpdate({
logChannel: interaction.options.getChannel("channel").id
});
}
我也试过:
await data.findOneAndUpdate({
但那只是 returns:
TypeError: data.findOneAndUpdate is not a function
当使用 .findOneAndUpdate()
时,它需要两个参数,即过滤器和要将文档更改为的值。在您的代码中,您基本上是在要求 mongoose
搜索 logChannel
等于 interaction.options.getChannel("channel").id
的文档,然后您没有指定要将其更新到的内容。因此,在您的情况下,您所要做的就是添加过滤器并正确接收数据,因为由于您使用的是 .findOneAndUpdate
,因此它 returns 是更改前的文档快照。所以你的代码可能看起来像这样:
const data = await guildSchema.findOneAndUpdate({
id: interaction.guild.id // Give the filter here
},
{
logChannel: interaction.options.getChannel("channel").id // Update the data here
}, {
new: true // You can optionally give this property if you want to receive the new document after the change
});
您可以在此处了解有关 .findOneAndUpdate()
的更多信息:Mongoose | findOneAndUpdate
run: async (interaction, client) => {
const data = await guildSchema.findOneAndUpdate({
id:interaction.guild.id \it will search for your data
},
{
logChannel: interaction.options.getChannel("channel").id
};
}
这应该适合你
当使用我的一个命令更新公会文件时,它只更新顶级公会文件而不是它被发送的公会,这里有一张图片来进一步解释它:
我想制作它以便它在它被发送的行会中更新,这是我所拥有的。
代码:
run: async (interaction, client) => {
let data = await guildSchema.findOne({
id: interaction.guild.id
});
// Command:
await guildSchema.findOneAndUpdate({
logChannel: interaction.options.getChannel("channel").id
});
}
我也试过:
await data.findOneAndUpdate({
但那只是 returns:
TypeError: data.findOneAndUpdate is not a function
当使用 .findOneAndUpdate()
时,它需要两个参数,即过滤器和要将文档更改为的值。在您的代码中,您基本上是在要求 mongoose
搜索 logChannel
等于 interaction.options.getChannel("channel").id
的文档,然后您没有指定要将其更新到的内容。因此,在您的情况下,您所要做的就是添加过滤器并正确接收数据,因为由于您使用的是 .findOneAndUpdate
,因此它 returns 是更改前的文档快照。所以你的代码可能看起来像这样:
const data = await guildSchema.findOneAndUpdate({
id: interaction.guild.id // Give the filter here
},
{
logChannel: interaction.options.getChannel("channel").id // Update the data here
}, {
new: true // You can optionally give this property if you want to receive the new document after the change
});
您可以在此处了解有关 .findOneAndUpdate()
的更多信息:Mongoose | findOneAndUpdate
run: async (interaction, client) => {
const data = await guildSchema.findOneAndUpdate({
id:interaction.guild.id \it will search for your data
},
{
logChannel: interaction.options.getChannel("channel").id
};
}
这应该适合你