Node.js 如何阻止在Mongoose数组| NodeJS Mongoose中创建重复项

Node.js 如何阻止在Mongoose数组| NodeJS Mongoose中创建重复项,node.js,arrays,npm,mongoose,discord.js,Node.js,Arrays,Npm,Mongoose,Discord.js,好的,所以我如何阻止在Mongoose数组中创建副本 这是我的密码: channel.send(`Welcome${member.user.tag}被${invite.inviter.tag}邀请) client.invites[invite.code]=invite.uses const req=wait InviteLogger.findOne({ ServerID:member.guild.id, UserID:invite.inviter.id }) 如果(!req){ const do

好的,所以我如何阻止在Mongoose数组中创建副本

这是我的密码:

channel.send(`Welcome${member.user.tag}被${invite.inviter.tag}邀请)
client.invites[invite.code]=invite.uses
const req=wait InviteLogger.findOne({
ServerID:member.guild.id,
UserID:invite.inviter.id
})
如果(!req){
const doc=新的日志记录程序({
ServerID:member.guild.id,
UserID:invite.inviter.id
});
等待doc.save();
};
const doc=await InviteLogger.findOneAndUpdate({ServerID:member.guild.id,UserID:invite.inviter.id},{$inc:{Joins:1}},{new:true});
if(req.invested==member.user.id){
返回;
}
const doc1=wait InviteLogger.findOneAndUpdate({ServerID:member.guild.id,UserID:invite.inviter.id},{$push:{Invited:member.user.id},{new:true});
这里还有一个关于模式外观的屏幕截图:


如果您不想复制
member.user.id
,请使用以下命令:

if(member.user.id.includes(req.Invited)) return;
这将检查
member.user.id
是否是数组中的元素之一。 并删除这部分代码:

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

此代码不执行任何操作,因为它检查整个数组是否等于
member.user.id
,而您只需检查它是否是数组的一部分。

您可以使用
$addToSet