【发布时间】:2018-11-26 13:26:11
【问题描述】:
我已根据响应要求对您的所有建议进行了一些编辑,现在工作正常。现在我遇到的问题是与帖子相关联的类似按钮。我试图用数据识别它们- id 属性,但每次我单击特定按钮时它只会在第一个 P 标签中更新喜欢计数。在数据库中,除了使用 data-id 来区分之外,它也只影响第一个帖子。我不确定我对 data-id 的使用因为这是我第一次尝试它。如果有错误,请纠正我,并帮助我将更新 likescount 操作与每个循环按钮相关联。我将更新我的代码示例以及我在控制台上得到的响应。请帮帮我。
登录控制台
(3) [{…}, {…}, {…}]0:{_id:“5b2673ed3e6a8e0c749b4c32”,正文: “kjhdishduishduihsduishduishdui shdishduihsuids...opdksaodkjsa ↵dskjdiosajd ↵dsjadoisad ↵dsaoijdisa”,作者:“5b206e07e850480d50861f75”,标题:“测试喜欢的简单帖子”,__v:0,...}1:{_id:“5b2073b7517e2b1760ffbbfd”, 身体:“Quisque velit nisi, pretium ut lacinia in, element...da. Cras ultricies ligula sed magna dictum porta。”,作者: “5b206e07e850480d50861f75”,标题:“nodejs”,__v:0,...}2:{_id: “5b2073ad517e2b1760ffbbfc”,正文:“Quisque velit nisi,pretium ut lacini in,元素……da。 Cras ultricies ligula sed magna dictum 端口。”,作者:“5b206e07e850480d50861f75”,标题:“测试”,__v:0,...}
main.js
$('.likeicon').on('click',() => {
var id = $('.likeicon').attr('data-id');
$.ajax({
url:'/forum/addlikes/'+id,
method:"POST"
});
});
refresh();
});
function refresh(){
$.ajax({
url: "/forum/getlikes/",
contentType: "application/json",
method: "GET",
success: function(response) {
// console.log(response);
$.each(response, function(index) {
// console.log(response[index].likes);
$(".likes-" + response[index]._id).first().html( response[index].likes );
});
setTimeout(refresh, 500);
}
});
}
index.pug
extends layout
block content
h1 #{title}
ul.list-group
each post, i in posts
li.list-group-item
a(href="/forum/"+post._id+"?"+post.author)= post.title
div #{post.body}
button(data-id=post._id class='likeicon' value=post._id) LIKE
p(class='likes-'+post._id)
post_routes.js
router.get('/getlikes/',(req,res) => {
Post.find({},(err, posts) => {
if(err){
console.log(err);
} else {
posts = posts.slice(0).reverse();
res.send(posts);
}
});
})
router.post('/addlikes/:id',(req,res) => {
Post.findById(req.params.id,(err,post) => {
if(err) throw err;
else{
post.likes+=1;
post.save((err) =>{
if(err) throw err;
else{
console.log(post.likes);
}
});
}
});
});
请单独帮我解决这个问题。我快完成了。提前致谢。
【问题讨论】:
-
返回点赞的端点不应该返回html,而是只有点赞值的json。收到时仅手动替换 element.innertHTML。您似乎想再添加一个端点并改用它。
-
非常感谢。我按照你的建议做了,效果很好。你救了我的命。我会感谢这个社区。span>
-
第一次工作正常。但突然间我收到了这个错误。有人可以帮我解决一下吗。
-
events.js:160 throw er; // 未处理的 'error' 事件 ^ CastError: Cast to ObjectId failed for value "undefined" at path "_id" for model "posts" at MongooseError.CastError
-
我认为这可能表明 req.parama.id 未定义,请在使用前检查它。 findById 如果找不到 id 也可能会使帖子未定义,但我认为它与您的错误无关