有一个Firebase实时数据库,网站上已经实现了动漫点赞功能。问题来自于删除点赞,它是这样实现的:发出一个get请求,响应包含当前点赞数,并发送一个put请求,将响应设置为get请求减1。
此外,用户关于这部动漫的信息会从他的数据中删除,但这并不那么重要。
async unlikeAnime(userID, likeID, animeID) {
const likeCount = await firebase.get(`AnimeList/${animeID}/like.json`);
firebase.put(`AnimeList/${animeID}/like.json`, parseInt(likeCount.data - 1));
firebase.delete(`Users/${userID}/likedAnime/${likeID}.json`);
}
除了0之外,任何数字都可以正常工作。如果一个新的动漫被添加到网站(它以0个赞显示在数据库中),然后用户喜欢它(向数据库发送1个赞),然后删除它(向该数据库发送0个赞)。那么该数据库将给出一个错误,并且不会删除该赞。
我检查了是否在所有情况下都发送了相同类型的数据(是的,一个数字),检查了当有1个赞时,是否从get请求中收到了正确的响应(是,likeCount.date返回1,发送0)。我甚至写了ParseInt以防万一,它没有帮助。
get请求和delete请求100%完美地工作,问题仅在put中,并且仅当数据等于数字0时。它根本无法在数据库中设置数字0,并返回一个错误。
我检查了请求的质量,它是正确创建的。链接完全正常工作且正确。我还将附上一个数据库的链接。
它是用0个赞创建的,然后用户放置1个赞并删除它,再次设置0。一个错误来了。