I'm building an app where users can post, delete and also rank (like, dislike) each others' posts. And on the profile page user can also view posts that he ever liked.
Currently I'm thinking to make the structure something like that (true - for like, false for dislike, empty for no rating):
{
"ranks": {
"post1": {
"user1": "true",
"user2": "false",
"user3": "false"
},
"post2": {
"user1": "true",
"user3": "true"
},
"post3": {
"user1": "false",
"user2": "true",
"user3": "true"
}
}
}
All seems pretty good until I need to retrieve all posts that a user ever liked. E.g. for user1 would be [post1,post2]. For user2 - [post3].
Then I was thinking to restructure it the following way:
{
"ranks_by_user": {
"user1": {
"post1": "true",
"post2": "true",
"post3": "false"
},
"user2": {
"post1": "false",
"post3": "true"
},
"user3": {
"post1": "false",
"post2": "true",
"post3": "true"
}
}
}
However, this is even more inconvenient: what if I delete a post, how would I also delete all the related ranks? Can't figure out a query to find all users in ranks_by_user list which has post-n child. How would one solve such structure issue?