【发布时间】:2016-11-24 20:59:35
【问题描述】:
所以我正在使用 adonis 为图像托管网站(如 reddit 或 imgur)构建一个非常基本的后端。我在尝试让用户能够对帖子进行投票但限制每个用户在每个帖子中仅投票一次时遇到了我的一个控制器的问题。
这是我的控制器类文件:
'use strict'
const Vote = use('App/Model/Vote')
const Post = use('App/Model/Post')
class VoteController {
* create (request, response) {
let currentUser = request.authUser
let postId = request.param('post_id')
let data = {}
data.user_id = currentUser.id
data.post_id = postId
let voteCheck = yield Vote.query()
.where({'post_id': postId,
'user_id': currentUser.id })
console.log(voteCheck)
if (voteCheck) {
response.status(401).json({error: "User can only cast 1 vote per post."})
} else {
let addVote = yield Vote.create(data)
yield addVote.save();
let post = yield Post.findBy('id', data.post_id)
let votes = post.vote_count;
if (votes === null ) {
votes = 1;
} else {
votes++;
}
post.vote_count = votes;
yield post.save()
response.status(202).json([post, addVote]);
}
}
}
module.exports = VoteController
我一直在玩弄不同的条件组合。我的主要问题是变量“voteCheck”。本质上,如果用户投票,它会在我的“投票”表中创建一个新列,用于存储 authUser 的 ID 和帖子的 ID。我的条件之前有一个查询,用于搜索与该条件匹配的预先存在的投票,如果存在,则会引发错误。如果不是(否则)它会创建一个新投票并将 1 添加到帖子“vote_count”。后者工作得很好,但我认为我的条件逻辑有问题,因为即使对于尚未投票的用户,我目前也遇到错误。有什么建议么?非常感谢您的阅读!
【问题讨论】:
标签: javascript adonis.js