【发布时间】:2016-07-29 14:54:00
【问题描述】:
我正在尝试使用 POST 方法将数据插入到表中,因为我有一个角度服务功能
angular.module("productCategoryModule")
.factory("productCategoryService",productCategoryService);
productCategoryService.$inject = ['$http'];
function productCategoryService($http){
return {
createProductCategory:function(productCategory){
console.log("createProductCategory in service called",productCategory);
return $http.post('/api/createProductCategory',
{
categoryName:productCategory.categoryName,
details:productCategory.categoryDetails
}
);
},
getAllProductCategories:function(){
return $http.get('/api/getAllProductCategory');
}
}
}
在服务器端我有
function productCategoryRouteConfig(app){
this.app = app;
this.routeTable = [];
this.init();
}
productCategoryRouteConfig.prototype.init = function(){
var self = this;
this.addRoutes();
this.processRoutes();
}
productCategoryRouteConfig.prototype.processRoutes = function(){
var self = this;
self.routeTable.forEach(function(route){
if(route.requestType == 'get'){
//console.log("requestType",route.requestType)
self.app.get(route.requestUrl,route.callbackFunction);
} else if(route.requestType == 'post'){
//console.log("requestType",route.requestType);
self.app.post(route.requestUrl,route.callbackFunction);
} else if(route.requestType == 'delete'){
}
});
}
productCategoryRouteConfig.prototype.addRoutes = function(){
var self = this;
self.routeTable.push({
requestType: 'get',
requestUrl: '/createProductCategory',
callbackFunction: function(req, res){
res.render('createProductCategory',{title:'Create Product Category'});
}
});
self.routeTable.push({
requestType: 'post',
requestUrl: '/api/createProductCategory',
callbackFunction: function(req, res){
console.log("Post called");
//res.render('createProductCategory');
console.log("req.body",req.body);
var productCategoryDb = require('../database/productCategoryDb');
// console.log("productCategoryDb post",productCategoryDb);
// console.log("hello from createProductCategory post");
// console.log("req.body",req.body);
// productCategoryDb.productCategoryDb.createProductCategory(req.body, function(status){
// if(status)
// res.json(status);
// console.log(status);
// });
}
});
self.routeTable.push({
requestType: 'get',
requestUrl: '/viewProductCategory',
callbackFunction: function(req, res){
res.render('viewProductCategory',{title:'View Product Category'});
}
});
self.routeTable.push({
requestType: 'get',
requestUrl: '/api/getAllProductCategory',
callbackFunction: function(req, res){
console.log("hello from getAllProductCategory");
var productCategoryDb = require('../database/productCategoryDb');
console.log("productCategoryDb",productCategoryDb);
// productCategoryDb.productCategoryDb.getAllProductCategories(
// function (productCategories){
// console.log("productCategories",productCategories);
// res.json({productCategories : productCategories});
// }
// );
}
});
}
module.exports = productCategoryRouteConfig;
当我点击客户端的按钮时出现此错误
POST http://localhost:3000/api/createProductCategory 500(内部服务器错误)
我正在使用 Node express mysql 和 angular。
我的数据库文件夹中有三个文件。
1.connectionString.js
var mysqlConnectionString = {
connectionString:{
host:'localhost',
user:'root',
password:'root',
database:'vidzy'
}
}
//module.exports = mysqlConnectionString;
exports.mysqlConnectionString = mysqlConnectionString;
2.connection.js
var mysql = require('mysql');
var mysqlConnectionString = require('/home/ep-3/node-express/yt_tutorial/database/connectionString.js');
var connectionStringProvider = {
getSqlConnection:function(){
var connection = mysql.createConnection(mysqlConnectionString.mysqlConnectionString.connectionString);
connection.connect(function(err){
if(err){
throw err;
} else{
console.log("connection was successful");
}
});
return connection;
},
closeSqlConnection:function(currentConnection){
currentConnection.end(function(err){
if(err){
throw err;
} else{
console.log("Disconnected");
}
})
}
}
exports.connectionStringProvider = connectionStringProvider;
3.productCategoryDb.js
var connectionProvider = require('/home/ep-3/node-express/yt_tutorial/database/connection.js');
var productCategoryDb = {
createProductCategory : function(productCategory, onSuccessful){
var insertStatement = 'INSERT INTO productcategory SET?';
var category = {
categoryName : productCategory.categoryName,
Details : productCategory.details,
isValid : productCategory.isValid,
CreatedDate : new Date()
}
var connection = connectionProvider.connectionStringProvider.getSqlConnection();
if(connection){
connection.query(insertStatement, category, function(err, result){
if(err){
console.log(err);
}
onSuccessful({status : 'Successful'});
console.log(result);
});
connectionProvider.connectionStringProvider.closeSqlConnection(connection);
}
},
getAllProductCategory : function(callback){
var connection = connectionProvider.connectionStringProvider.getSqlConnection();
var selectStatement = 'SELECT * FROM productcategory';
if(connection){
connection.query(selectStatement, function(err, rows, fields){
if(err){ through err; }
console.log(rows);
callback(rows);
});
}
}
}
exports.productCategoryDb = productCategoryDb;
【问题讨论】:
-
当您遇到 500 Internal Server Error 时,绝对要做的第一件事就是检查服务器的错误日志。
-
你能确保localhost服务器正常工作吗?使用 CURL 或任何其他工具生成相同的请求,并先尝试一下。
-
@CBroe 我得到 GET /libs/bootstrap/css/bootstrap-responsive.min.css 304 9.907 ms - - GET /libs/jquery/dist/jquery.min.js 304 9.438 ms - -获取 /libs/bootstrap/js/bootstrap.min.js 304 9.309 毫秒 - - 获取 /libs/angular/angular.min.js 304 9.276 毫秒 - - 获取 /javascripts/app/productCategory/productCategoryModule.js 304 9.230 毫秒 - - GET /javascripts/app/productCategory/productCategoryController.js 200 5.135 ms - 569 GET /javascripts/app/productCategory/productCategoryService.js 200 7.232 ms - 586 GET /libs/angular/angular.min.js.map 304 0.459 ms - -帖子名为 req.body 未定义
-
您能否通过更新您的问题来发布您的错误消息堆栈跟踪??
-
@daniel.. 我只收到问题中提到的错误。我花了一整天的时间来解决这个问题。我发现问题出在 require 函数上。该应用程序在 var productCategoryDb = require('../server/database/productCategoryDb'); 上崩溃我也试过改变这里的路径。
标签: mysql angularjs node.js express