我在猫鼬中有以下架构:
UserSchema = new Schema
username: {type: String, required: true}
GameSchema = new Schema
identifier: String
users: [UserSchema]
Run Code Online (Sandbox Code Playgroud)
我想确保游戏中的每个用户都有一个唯一的用户名。但是,如果我添加
unique: true
Run Code Online (Sandbox Code Playgroud)
对于用户名定义,它似乎在所有游戏中强制执行唯一性,而不仅仅是在用户所在的游戏中。此外,如果我有 1 个以上没有用户的游戏,则会出现以下错误:
games.$users.username_1 dup key: { : null }
Run Code Online (Sandbox Code Playgroud)
我尝试向用户名字段添加自定义验证器以手动检查该用户名是否已在父游戏的范围内使用,但在猫鼬中,验证器功能仅接收用户名的实际字符串,所以我没有任何办法检查用户名在游戏中是否唯一,因为我无法在验证器函数中获得对父游戏文档的引用。
有没有办法在猫鼬中完成这种验证?