2

フォームを使用して、ノードを使用してユーザーの投票をmongoデータベースに送信するWebページを作成しています。以下のコードはdbを正常に変更しますが、chromedev-toolsで保留中のステータス操作が発生します。これにより、すべてのjsが実行されなくなり、数分後にブラウザが(存在しない)/ v/fooにリダイレクトされます。この問題は、メソッドとして「get」ではなく「post」を使用する場合にも発生します。

index.jade:

form(method= 'get', action= '/v/foo')
  button.vote(type= 'submit')

app.js: app.get('/v/:postID', home.vote);

home.js:

exports.vote = function(req, res){
  // gets postID from the URL
  postID = req.params.postID;
  // gets logged-in user
  user = req.session.username;
  // sends postID, retrieves a post with ID postID
  postdb.findPost(postID, function(post){
  // readPost(postID, function(post){
    // increments the 'votes' property of the comment by 1
    titles.update({postID: postID}, {$inc: {ups: 1}}, function(err){
      if (err) throw err;
    });

    // code that calculates current post level and progress goes here (works fine)

    // updates level and level progress
    titles.update({postID: postID}, {$set: {level: level, lvlProg: lvlProg}}, function(err){
      if (err) throw err;
    });

    accounts.update({username: user}, {$push: {votedPosts: postID}}, function(err){
      if (err) throw err;
      console.log('recorded')
    });

  });
4

1 に答える 1

4

コードは応答を送信しないため、ブラウザは混乱します。;)

res.send(200);すべてが成功するかどうか試してください。

HTTPフォームは、リクエストが正常に閉じられることを期待しており、を使用しない場合、ノードはその接続を無期限に保持しendますres.send()

于 2013-02-22T16:48:40.697 に答える