2016-11-27 1 views
0

Я пытаюсь использовать Ajax для продвижения сообщения. В дополнение к отправке данных upvote, я хочу отправить идентификатор сообщения, чтобы в конечном итоге использовать findOneAndModify из mongoose для таргетинга этой конкретной должности и повышения на 1. По какой-то причине я могу использовать ajax для продвижения определенной должности, но отправка идентификатора объекта обратно на сервер не работает.Почему мой вызов 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'); 

     }) 
    }) 
}); 

И, наконец, вот мой код сервера

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); 



}); 

в console.log (mongoPostId) Я все время становлюсь неопределенным. Однако проблема где-то с моим вызовом ajax, потому что я не могу отправить переменную postID вместе с переменной upvoteIncrement.

Заранее спасибо.

ответ

0

Конфигурация вашего ajax() конфигурации отсутствует для обозначения значения данных, поэтому postID получает значение в объекте конфигурации ajax() вместо объекта данных. Попробуйте вместо этого:

data: { upvoteIncrement, postID }, 

Кроме того, ваше значение upvote будет upvoteIncrement и не только upvote, как вы в настоящее время в вашей стороне сервера кода.

+0

это сработало! Благодаря! –

Смежные вопросы