Reputation: 57
I have a like table. and in that like table I have a array called videoLikes. I need to store the userData who had liked the video. so when I am trying to push an object with userId field into that array I got duplicate datas. my userId is unique on model so I need to push only a user once in that array. I have tried $addToSet operation but it's not working properly.
My usecase is when a user tried to like the video second time it won't push to that array.
{
"videoId": 275,
"likesCount": 4,
"videoLikes": [
{
"userId": 149,
"uid": "5B8slS9AqpeNMJWK5CgbwzdXhQ82",
"_id": {
"$oid": "625569ecd56d19a1954f5cc2"
}
},
{
"userId": 149,
"uid": "5B8slS9AqpeNMJWK5CgbwzdXhQ82",
"_id": {
"$oid": "625569ecd56d19a1954f5cc4"
}
},
{
"userId": 149,
"uid": "5B8slS9AqpeNMJWK5CgbwzdXhQ82",
"_id": {
"$oid": "625569ecd56d19a1954f5cc0"
}
},
{
"userId": 149,
"uid": "5B8slS9AqpeNMJWK5CgbwzdXhQ82",
"_id": {
"$oid": "625569ecd56d19a1954f5cbe"
}
}
]
}
Upvotes: 0
Views: 422
Reputation: 88
using triggers you'll get time to check whether the user liking is previously done or not and perform action on its behalf. for checking whether a userId liked or not you can use Object instead of array example:
let schema=mongoose.Schema{
videoId:Number,
likesCount:Number,
videoLikes={{uid:Number}}
}
Upvotes: 1