2016-11-27 1 views
0

投稿をアップヴォートするために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変数を一緒に送ることができないためです。

ありがとうございます。

答えて

0

ajax()設定にデータ値のオブジェクト表記がないため、データオブジェクトの代わりにajax()コンフィグオブジェクトにpostIDが設定されています。代わりにこれを試してください:あなたが現在お使いのサーバー側のコードで持っているよう

data: { upvoteIncrement, postID }, 

また、あなたupvote値はupvoteIncrementだけでなくupvoteになります。

+0

うまくいった!ありがとう! –

関連する問題