私はグループチャットアプリケーションを作成しようとしています。しかし、私は配列に同じid(文字列)を置くと、一意のtrueは動作せず、同じidが配列に追加され、私はこれを例として終わります。私はIDのユーザIDの配列を含むようにしたいだけのユニークなIDのMongoose独自の真の文字列の配列で動作しません
{ _id: 5885dc260a6bd22768bef387,
roomName: 'Room1',
author: '587cd401a279b834b0a4cb8d',
__v: 0,
messages: [],
usersIds:
[ 587cd401a279b834b0a4cb8d,
587cd3ed7bd35b37d4c75a36,
587cd3ed7bd35b37d4c75a36 ] }
これは、これは私が特定の部屋でユーザーIDにユーザーを追加する方法である私の部屋スキーマ
const roomChat = new Schema({
roomName: String,
author: String,
usersIds:[
{
type: Schema.ObjectId,
unique: true
}
],
messages: [
{
author: String,
text: String,
date: Number
}
]
});
ある
app.put('/roomChat', (req, res) => {
GroupChat.findByIdAndUpdate(req.body.roomId, {$push:{usersIds:req.body.userId}},{safe: true},(err,room) => {
console.log(room);
});
});
'$ push'の代わりに' $ addToSet'を使います。つまり、{$ addToSet:{usersIds:req.body.userId}}です。 – chridam