2017-01-23 73 views
0

我正在嘗試創建羣聊應用程序。但是,當我把相同的ID(字符串)數組,唯一的真正的不工作,相同的ID被添加到數組,我最終以此爲例。我想ID的用戶id數組爲只包含唯一的ID貓鼬獨特真正不工作在字符串數組

{ _id: 5885dc260a6bd22768bef387, 
    roomName: 'Room1', 
    author: '587cd401a279b834b0a4cb8d', 
    __v: 0, 
    messages: [], 
    usersIds: 
    [ 587cd401a279b834b0a4cb8d, 
    587cd3ed7bd35b37d4c75a36, 
    587cd3ed7bd35b37d4c75a36 ] } 

這是我的房間模式

const roomChat = new Schema({ 
     roomName: String, 
     author: String, 
     usersIds:[ 
      { 
       type: Schema.ObjectId, 
       unique: true 
      } 
     ], 
     messages: [ 
      { 
       author: String, 
       text: String, 
       date: Number 
      } 
     ] 
    }); 

這是我如何將用戶添加到用戶id在特定的房間

app.put('/roomChat', (req, res) => { 
      GroupChat.findByIdAndUpdate(req.body.roomId, {$push:{usersIds:req.body.userId}},{safe: true},(err,room) => { 
       console.log(room); 
      }); 
     }); 
+0

而不是'$ push',使用'$ addToSet',即'{$ addToSet:{usersIds:req.body.userId}}' – chridam

回答

1

剛使用$addToSet代替$push

app.put('/roomChat', (req, res) => { 
    GroupChat.findByIdAndUpdate(req.body.roomId, {$addToSet:{usersIds:req.body.userId}},{safe: true, new:true},(err,room) => { 
      console.log(room); 
     }); 
}); 
+0

我還需要唯一的真實嗎? –

+0

不,在您的模式中不需要'unique:true' –