首页 > 解决方案 > 如何阻止在 Mongoose 数组中创建重复项 | NodeJS 猫鼬

问题描述

好的,我如何阻止在 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});

还有一个关于模式外观的屏幕截图:

架构

标签: node.jsarraysnpmmongoosediscord.js

解决方案


如果您不想member.user.id被重复,请使用以下内容:

if(member.user.id.includes(req.Invited)) return;

这将检查是否member.user.id是数组中的元素之一。并删除这部分代码:

if(req.Invited === member.user.id) {
    return;
}

这段代码什么都不做,因为它检查整个数组是否等于member.user.id,而您要做的只是检查它是否是数组的一部分。


推荐阅读