2017-03-19 3 views
0

私のノードコールの1つに上記の問題があります。 このエラーは、res.sendが複数回呼び出された場合に表示されます。 コードを見ると、resを一度だけ送信する必要があるので、ここで何が間違っているのか分かりません。ノードが新しいエラーをスローする( '送信後にヘッダーを設定できない')

は、それは私があなたはforループ内res.send()をやっている

var express = require('express'); 
var bodyParser = require('body-parser'); 
var session = require('express-session'); 
var cors = require('cors'); 
var massive = require('massive'); 
var config = require('./config'); 
var app = express(); 
app.use(bodyParser.json()); 
app.use(cors()); 

var db = massive.connect({connectionString: config.connectionString}, function(err, localdb){ 
    db = localdb; 
    app.set('db', db); 
}); 
app.post('/api/login', function(req, res, next) { 
    db.get_users(function(err, users) { 
     if(err) res.status(500).json(err); 
     else { 
      for(var i = 0; i < users.length; i++) { 
       if(req.body.email == users[i].email && req.body.password == users[i].password) { 
        console.log("matched"); 
        var currentUser = users[i]; 
        res.send({ 
         msg: 'passed', 
         user: currentUser 
        }); 
       } 
       else { res.send("Username or Password is wrong"); } 
      } 
     } 
    }) 
}) 
app.listen(3000, function() { 
    console.log("I am listening"); 
}); 

答えて

1

を挿入したときにエラーがスローされます。つまり、あなたはそれを複数回呼び出すことになります。表示されるエラーは、同じ要求に対して複数の応答を送信しようとした場合に発生します。あなたはそれをすることはできません。

私はあなたが達成しようとしている内容を正確に把握していないが、あなたがforループで結果を蓄積し、forループ後1つの応答を送信するか、またはあなたができるだけ早く壊したりforループの外に返すことができますあなたは応答を送る。要点は、1つの応答しか送信できないことです。

+0

答えをありがとう。 回答を見つけるときに戻ることで問題を修正しました。 – Yh1234

関連する問題