如何阻止在 Mongoose 数组中创建重复项 | NodeJS 猫鼬
Posted
技术标签:
【中文标题】如何阻止在 Mongoose 数组中创建重复项 | NodeJS 猫鼬【英文标题】:How do I stop duplicates from being created in a Mongoose Array | NodeJS Mongoose 【发布时间】:2021-08-17 03:40:39 【问题描述】:好的,我如何阻止在 Mongoose 数组中创建重复项
这是我的代码:
channel.send(`Welcome $member.user.tag Invited By $invite.inviter.tag`)
client.invites[invite.code] = invite.uses
const req = await InviteLogger.findOne(
ServerID: member.guild.id,
UserID: invite.inviter.id
)
if(!req)
const doc = new InviteLogger(
ServerID: member.guild.id,
UserID: invite.inviter.id
);
await doc.save();
;
const doc = await InviteLogger.findOneAndUpdate(ServerID: member.guild.id, UserID: invite.inviter.id, $inc: Joins: 1 , new: true);
if(req.Invited === member.user.id)
return;
const doc1 = await InviteLogger.findOneAndUpdate(ServerID: member.guild.id, UserID: invite.inviter.id, $push: Invited: member.user.id , new: true);
还有一个关于 Schema 外观的屏幕截图:
【问题讨论】:
你可以使用$addToSet
【参考方案1】:
如果您不想重复 member.user.id
,请使用以下命令:
if(member.user.id.includes(req.Invited)) return;
这会检查member.user.id
是否是数组中的元素之一。
并删除这部分代码:
if(req.Invited === member.user.id)
return;
这段代码什么都不做,因为它检查整个数组是否等于member.user.id
,而您要做的只是检查它是否是数组的一部分。
【讨论】:
以上是关于如何阻止在 Mongoose 数组中创建重复项 | NodeJS 猫鼬的主要内容,如果未能解决你的问题,请参考以下文章