2016-05-11 13 views
0

Ich versuche, ein Tic-Tac-Toe-Spiel zu erstellen und die Benutzerdaten in einer Datenbank speichern möchten, aber mein Problem ist, dass der Router möchte ich dies tun kann nicht erreicht werden, bekomme ich eine 'Interner Server Fehlermeldung (500)'. HierEinige meiner Routen funktionieren nicht in Express

ist die index.js:

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Lab5' }); 
}); 

//check if server is online 
router.get('/alive', function(req, res, next) { 
    res.send('alive'); 
}); 

router.post('/alive', function(req, res) { 
    //here I generate the next step for the game 
}); 

//this route can't be reached 
router.get('/db', function(res, req) { 
    var db = req.db; 
    var collection = db.get('usercollection'); 

    collection.find({}, {}, function(e, docs) { 
     res.send(JSON.stringify(docs)); 
    }); 
}); 

//and this route can be reached 
router.post('/db', function(req, res) { 
    var db = req.db; 
    var collection = db.get('usercollection'); 

    var username = req.body.username; 
    var gameStatus = req.body.gameStatus; 

    try { 
     if(Object.keys(req.body).length !== 0 && JSON.stringify(req.body) !== JSON.stringify({})){ 
      console.log("Data insert..."); 
      collection.insert({ 
       "username" : username, 
       "gameStatus" : gameStatus 
      }, function (err, docs) { 
       if(err) { 
        res.send("Error inserting data into database!"); 
       } 
      }); 
     } 
    } catch(err) { 
     console.log("Error in insert: " + err); 
    } 
}); 

module.exports = router; 

Hier werden die getDB.js ist:

function getDB() { 
    var xhttp = createRequest(); 

    if(xhttp === null) { 
     alert("Ajax object not supported by your browser!"); 
    } 
    else { 
     xhttp.onreadystatechange = function() { 
      if(xhttp.readyState == 4 && xhttp.status == 200) { 
       if(xhttp.responseText != null) { 
        var db = JSON.parse(xhttp.responseText); 

        console.log(db); 
       } 
      } 
     } 


     xhttp.open('GET', 'db', true); 
     xhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
     xhttp.send(); 
    } 
} 

Mein Problem ist mit

router.get('/db', function() {...}); 

und die

router.post('/db', function() {...}); 

funktioniert gut, es fügt die gesendeten Daten in die Datenbank ein.

Jede Hilfe wäre willkommen!

+0

Es scheint, als ob Sie eine Methode aufrufen, nicht auf 'res'. Ist dies nur, weil Sie nicht den ganzen Code zeigen, oder ist dies das Problem? –

+0

Ja, jetzt funktioniert es. Das einzige Problem war, dass res und req in der Parameterliste umgekehrt wurden. – blacklight93

Antwort

Verwandte Themen