不能在app.post上获取/ api / addmasterlist

时间:2016-09-12 11:35:50

标签: node.js express

server.js

var express         = require('express');
var mysql           = require('mysql');
var app             = express();                  
var morgan          = require('morgan');          
var bodyParser      = require('body-parser');     
var methodOverride  = require("method-override");
var request         = require("request");

app.use(express.static(__dirname + '/public'));                       
app.use(morgan('combined'));                                             
app.use(bodyParser.urlencoded({'extended' : 'true'}));                
app.use(bodyParser.json());                                           
app.use(bodyParser.json({ type: 'application/vnd.api+json'}));        
app.use(methodOverride());

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    host     : 'localhost',
    port     : 3306,
    user     : 'root',
    password : 'xxxxxxx',
    database : 'masterlist',
    debug    :  false
});




//Rest APIs
app.get('/api/fetchmasterlist', function(req, res){
    pool.getConnection(function(err, connection){

        if(!err){

            //Query
            var strquery = "SELECT * FROM students";
            connection.query(strquery, function(err, rows){
                if(err){
                    res.json("Error in Query." + err);
                }else{
                    res.json(rows);
                }
            });


        }else {

            //Return an Error
            connection.release();
            connection.destroy();
            res.json("Error geting connection from DATABASE.");
            return;
        }

    });

});
app.post('/api/addmasterlist', function(req, res){
    pool.getConnection(function(err, connection){

        if(!err){

            //Query
            /*var post  = req.body.param;*/
            var strquery = "INSERT INTO students(id, studentid, studentname, course, year) VALUES (?, ?, ?, ?, ?)";
            connection.query(strquery, [req.body.id, req.body.studentid, req.body.studentname, req.body.course, req.body.year], function(err, rows){
                if(err){
                    res.json("Error in Query." + err);
                }else{
                    res.json("Success in inserting the new student." + rows);
                }
            });


        }else {

            //Return an Error
            /*connection.release();
            connection.destroy();*/
            res.json("Error geting connection from DATABASE.");
            return;
        }

    });

});


// application route
app.get('*', function(req, res){
    res.sendfile('./public/index.html') // load the single static file
});



// listen
app.listen(8080);
console.log("App listening on port 8080");

我的api / addmasterlist无效,它给了我 不能GET / api / addmasterlist 浏览器出错 在masterlist上使用app.get看起来工作得很好并反映在数据库上问题是它对我的angular.js不起作用

好吧使用app.get似乎工作,但任何人都可以帮助我这是推动nodejs的正确方法吗?使用角度

$scope.saveNewStudent = function(){
    var dataa =  $scope.studentmasterlist.push({
        id: ($scope.studentmasterlist.length + 1),
        studentid: $scope.studentid,
        studentname: $scope.studentname,
        course: $scope.course,
        year: $scope.year,

    });

 $http.get('/api/addmasterlist', dataa).success(function(data, status) {
    console.log('Data posted successfully');
  })
    //Clear the scope
    $scope.studentid = "";
    $scope.studentname = "";
    $scope.course = "";
    $scope.year = "";

}

1 个答案:

答案 0 :(得分:1)

问题是您将/api/addmasterlist端点声明为POST请求。尝试将其更改为GET,它可能会按预期工作。

改变这个:

app.post('/api/addmasterlist', function(req, res){

对此:

app.get('/api/addmasterlist', function(req, res){

或者,你可以改变角度的http来自发布:

变化:

$http.get('/api/addmasterlist', dataa).success(function(data, status) {

$http.post('/api/addmasterlist', dataa).success(function(data, status) {