【发布时间】:2020-12-08 00:42:32
【问题描述】:
出于某种原因,我的应用不允许我创建多个个人资料。这是服务文件中的设置:
//如果存在则查找配置文件
async getProfile(user) {
let profile = await dbContext.Profile.findOne({
email: user.email
});
profile = await createProfileIfNeeded(profile, user);
await mergeSubsIfNeeded(profile, user);
return profile;
}
//如果不存在的话应该创建一个
async function createProfileIfNeeded(profile, user) {
if (!profile) {
profile = await dbContext.Profile.create({
...user,
subs: [user.sub]
});
}
return profile;
}
它适用于第一个用户,但是当我创建另一个用户时,我收到错误: {"error":{"message":"MongoError: E11000 duplicate key error collection: TownMiner.profiles index: info.subs_1 dup key: { info.subs: null }","status":400},"url": "/api/profile"}
令人困惑的是,subs 是通过 Auth0 设置的。当我在服务器中使用断点查看它时,它会显示那里的所有信息。此外,当我查看我的 MongoDB 集合时,它没有说任何值都是“null”。我现在在几个项目中使用了相同的设置,它们都运行良好(并且这个新项目是从同一个模板克隆的)。还要注意确保子信息完全不同。
这是 MongoDB 集合:
_id: ObjectId("***")
subs:Array
0:"auth0|***dda6a"
1:"auth0|***aa288
name:"kevin@test.com"
picture:"https://s.gravatar.com/avatar/c6788456e2639d2d10823298cc219aaf?s=480&r..."
email:"kevin@test.com"
createdAt:2020-08-07T21:23:05.867+00:00
updatedAt:2020-08-17T17:24:05.583+00:00
__v:1
我在这里查看了类似问题的其他答案,但找不到适合该项目的位置。任何帮助都会很棒。谢谢!
【问题讨论】: