Geo*_*nov 0 mongoose mongodb node.js
我正在尝试创建群聊应用程序。但是当我将相同的 id(string) 放入数组时,唯一的 true 不起作用,并且相同的 id 被添加到数组中,例如我最终得到了这个。我希望 userIds ID 数组仅包含唯一 ID
{ _id: 5885dc260a6bd22768bef387,
roomName: 'Room1',
author: '587cd401a279b834b0a4cb8d',
__v: 0,
messages: [],
usersIds:
[ 587cd401a279b834b0a4cb8d,
587cd3ed7bd35b37d4c75a36,
587cd3ed7bd35b37d4c75a36 ] }
Run Code Online (Sandbox Code Playgroud)
这是我的房间架构
const roomChat = new Schema({
roomName: String,
author: String,
usersIds:[
{
type: Schema.ObjectId,
unique: true
}
],
messages: [
{
author: String,
text: String,
date: Number
}
]
});
Run Code Online (Sandbox Code Playgroud)
这就是我将用户添加到特定房间的 userIds 的方式
app.put('/roomChat', (req, res) => {
GroupChat.findByIdAndUpdate(req.body.roomId, {$push:{usersIds:req.body.userId}},{safe: true},(err,room) => {
console.log(room);
});
});
Run Code Online (Sandbox Code Playgroud)
只是使用$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);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |