提问者:小点点

尽管我已经过滤掉了,我还是得到了重复的?


null

(node:37532) UnhandledPromiseRejectionWarning: MongoError: E11000 duplicate key error collection: aio.users index: _id_ dup key: { _id: "751868484832460840" }

null

我在过滤掉重复的东西后还能得到这个?我正在尝试为我的不和机器人的每个公会中的每个用户创建一个用户对象。这是我的密码。

null

aio.users.cache.forEach(async (user) =>{
        let userObject = await userList.find(uo => uo._id === user.id)
        if(!(userObject)){
            let newUser = await User.create({
                '_id': user.id,
                'username': user.tag,
                'avatarURL': user.avatarURL(),
                'description': `Hi! I'm ${user.username}!`,
                'accountcreated': user.createdAt
            })
            userList.push(newUser)
            globalGuild.markModified('users');
            return globalGuild.save();
        } return;
    })

null

在db中,甚至在user下都没有任何对象,所以它甚至没有任何重复。


共1个答案

匿名用户

比较ids时需要小心。在从mongoose返回的document-object中,_id很可能是objectid的一个实例。用户上的id很可能是一个字符串,因此用===连接这些字符串将会失败。

您可以尝试执行以下操作:

let userObject = await userList.find(uo => uo._id.toString() === user.id)