我使用mongoose有很多关系,看起来像这样.
TeamSchema = new Schema
name : String
players: [{ type: ObjectId, ref: 'Player' }]
Run Code Online (Sandbox Code Playgroud)
我想要做的是确保一个玩家在团队中不会出现两次.
当我做:
team.players.push(player)
team.save()
Run Code Online (Sandbox Code Playgroud)
如果我之前已添加过该播放器,我会在团队文档中看到两次播放器ID.我可以设置某种mongo/mongoose标志,以便save方法抛出异常,或者不添加播放器.我知道我可以手工检查,但我更喜欢更简单的解决方案.
谢谢!
Joh*_*yHK 27
使用$addToSet
更新运算符,如下所示:
Team.update({_id: team._id}, {$addToSet: {players: player}})
Run Code Online (Sandbox Code Playgroud)
假设player
是玩家的ObjectId,它只会被添加到团队的players
数组中(如果它尚未存在).
归档时间: |
|
查看次数: |
7539 次 |
最近记录: |