I have the following schema in mongoose:
UserSchema = new Schema
username: {type: String, required: true}
GameSchema = new Schema
identifier: String
users: [UserSchema]
I want to ensure that every user in a game has a unique username. However, if I add
unique: true
to the username definition, then it seems to enforce uniqueness across all games, not just within the game that the user resides. Also, if I have more than 1 game with no users, then I get the following error:
games.$users.username_1 dup key: { : null }
I tried adding a custom validator to the username field to manually check if that username is already taken within the scope of the parent game, but in mongoose the validator function only receives the actual string of the username, so I don't have any way of checking that the username is unique within the game because I can't get a reference to the parent game document in the validator function.
Is there any way to accomplish this sort of validation in mongoose?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…