投稿をアップヴォートするためにAjaxを使用しようとしています。私はupvoteのデータを送信することに加えて、私は最終的に特定のポストとupvoteを1でターゲットとするためにmongooseからのfindOneAndModifyを使用できるように、ポストのIDを送信したいと思います。何らかの理由で、特定の投稿をupvoteするのに、オブジェクトIDをサーバに返送することは動作しない。ここ私のAjaxコールは、私のサーバーに送信しているデータの一部だけを扱うのはなぜですか?
私のJADEのクライアントコード
each post in posts
.media.white.paddingBoxForPost
.media-left.media-middle
a.removeTextDeco(href=post.link, target='_blank')
img.media-object(src=post.img, alt='facebook logo')
.media-body
a.removeTextDeco(href=post.link, target='_blank')
div#mainTitlePost.media-heading.postTitleFont= post.title
div#mainShortDesc.descriptionFont= post.description
form(method="post")
label(for='upvote')
.form-group
select#mainPostId.postIdentity.hidePostId.form-control(name='upvote')
option= post._id
button.upvoteClick.btn.btn-lg.btnColor(type='submit')
span.glyphicon.glyphicon-fire 3
button.btn.btn-lg.btnColor(type='submit')
span.glyphicon.glyphicon-comment
そして、ここで私のAjax呼び出し
は$(function() {
$(".upvoteClick").click(function() {
var postID = {postID: $('.postIdentity').val()};
var upvoteIncrement = {upvote: 1};
// alert(postID);
// console.log(postID);
$.ajax({
type:"POST",
data: upvoteIncrement, postID,
dataType: 'json',
url:"http://localhost:9000/api/upvote"
}).success(function (data) {
// console.log(data);
// console.log('Process success');
})
})
});
され、最終的にここに私のサーバコードはconsole.logで
router.post('/upvote', function (req, res, next) {
var data = req.body.upvote;
var query= {title: "Will this work"};
var update = {$inc: {upvote: data}};
var options = {new: true};
var Upvote = mongoose.model('Upvote', schema);
var mongoPostId = req.body.postID;
console.log(mongoPostId);
console.log(data);
Upvote.findOneAndUpdate(query, update, options, function (err, posts) {
if (err){
console.log('got an error in your DB');
res.sendStatus(200);
}});
// .then(() => res.sendStatus(200))
// .catch(next);
console.log('process SHOULD be done');
// console.log(data);
});
(mongoPostIdです)私は未定義になっています。しかし、問題は私のajax呼び出しのどこかで、postID変数とupvoteIncrement変数を一緒に送ることができないためです。
ありがとうございます。
うまくいった!ありがとう! –