Node.js 无法在app.post上获取/api/addmasterlist

Node.js 无法在app.post上获取/api/addmasterlist,node.js,express,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 m

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不起作用,它给了我 无法获取/api/addmasterlist 浏览器上出现错误 在主列表中使用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 = "";

}

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

更改此项:

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

app.get('/api/addmasterlist', function(req, res){
或者,您可以将angular的http从get更改为post:

更改:

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


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

更改此项:

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

app.get('/api/addmasterlist', function(req, res){
或者,您可以将angular的http从get更改为post:

更改:

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


正如我提到的app.get似乎可以工作,但我的问题是,我似乎无法让我的应用程序将数据发送到节点这是我在angular上编辑的代码*请检查post谢谢,我相信你使用的是get in angular而不是post。我编辑了我的答案,检查了一下,也尝试了一下,它给了我这个angular.js:12011 POST 400(错误的请求)/api/fetchmasterlist工作正常吗?当你在浏览器中打开它时?没有主意了。我会注释掉所有不必要的代码,只保留服务器上的post路由和angular中的post调用,看看它是否有效。正如我提到的app.get似乎有效,但我的问题是我似乎无法让我的app将数据发送到节点这是我在angular上编辑的代码*请检查post,我相信你使用的是get in angular邮政局局长。我编辑了我的答案,检查了一下,也尝试了一下,它给了我这个angular.js:12011 POST 400(错误的请求)/api/fetchmasterlist工作正常吗?当你在浏览器中打开它时?没有主意了。我会注释掉所有不必要的代码,只是将post路由保留在服务器上,并将post调用保留在服务器上,然后看看它是否有效。