【发布时间】:2020-04-29 02:55:27
【问题描述】:
因此,每当用户向喜欢/不喜欢按钮发送垃圾邮件时,对数据库的更新都会以一种奇怪的方式进行。例如:
- 如果用户慢慢按点赞和不喜欢,帖子的点赞数会正常更新:不喜欢的帖子有 0 个赞,喜欢的帖子有 1 个赞
- 如果用户多次快速按赞和不赞,帖子的赞会以一种奇怪的方式更新:帖子有 0 个赞,如果不赞,然后突然有 2 个赞。
我相信这可能与 mongoose 更新数据库的异步特性有关。
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)
})
},
【问题讨论】:
标签: javascript jquery mongodb express mongoose