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