Поэтому, когда пользователь нажимает кнопку «Мне нравится / не нравится», обновления базы данных ведут себя странным образом. Например:
- , если пользователь МЕДЛЕННО нажимает «нравится» и «не нравится», лайки поста обновляются нормально: у поста 0 лайков, если он не нравится, у поста 1 лайк, если нравится
- если пользователь БЫСТРО нажимает кнопку «Нравится» и «В отличие от» несколько раз, а лайки поста обновляются странным образом: у поста есть 0 лайков, если он не понравился, и вдруг у него есть 2 лайка, когда он понравился.
Я считаю, что это может как-то связано с асинхронным характером того, как mon goose обновляет базу данных.
script. js:
$('.card-body').on('click', '#like-btn', function() {
//unlike button is similar except that it requests /unlikePost
$.get('/likePost', {username: username, postId: postId}, (data) => {});
})
Я думал об окончании вызова ajax вокруг timeout
, но я не уверен, что это лучший способ.
вызовы базы данных:
likePost: function(postId, username) {
database.updateOne(Post, {_id: postId}, {$inc: {numberOfLikes: 1}}, (flag) => {
})
database.updateOne(User, {username: username}, {$addToSet: {likedPosts: postId}}, (userFlag) => {
console.log(userFlag)
})
},
unlikePost: function(postId, username) {
database.updateOne(Post, {_id: postId}, {$inc: {numberOfLikes: -1}}, (flag) => {
})
database.updateOne(User, {username: username}, {$pull: {likedPosts: postId}}, (userFlag) => {
console.log(userFlag)
})
},