我真的需要一些帮助。当我尝试通过角度js中的http服务($ http.post)添加产品时,我面临内部服务器错误。所以基本上,你需要帮助我摆脱这种挫败感的文件是:
** index.js:这里我定义了我的快递服务器的api路由
var express = require('express');
var router = express.Router();
var productCtrl = require('../controllers/productCtrl');
router.get('/products', productCtrl.getAllProducts);
router.get('/products/:productId', productCtrl.readProduct);
router.post('/products', productCtrl.createProduct);
router.delete('/products/:productId', productCtrl.removeProduct);
router.put('/products/:productId', productCtrl.updateProduct);
module.exports = router;
** product.js:产品型号
var mongoose = require('mongoose');
var productSchema = new mongoose.Schema({
name: {type: String, required: true},
category: {type: String, default: ''},
price: { type: Number, default: 0},
picture: String,
pictures: [String],
quantity: {type: Number, default: 0},
status: {
type: String,
enum: ['Pending', 'In Progress', 'Cancelled', 'Done'],
default: 'Pending'
},
date: { type: Date, default: Date.now},
description: { type: String},
owner: {type: String}
});
var Product = mongoose.model('Product', productSchema);
module.exports = Product;
** productCtrl.js:我在Express Server上的控制器,我在其中构建了一个rest API
var Product = require('../models/product');
var sendJsonResponse = function (res, status, content ){
res.status(status);
res.json(content);
}
/* some other code here, but i will only show create action */
module.exports.createProduct = function (req, res){
Product
.create({
name: req.body.name,
category: req.body.category,
price: req.body.price,
picture: req.body.picture,
pictures: req.body.pictures.split(", "),
quantity: req.body.quantity,
status: req.body.status,
date: req.body.date,
description: req.body.description,
owner: req.body.owner
}, function createProduct(err, product){
if(err){
sendJsonResponse(res, 404, err);
return;
}
else {
sendJsonResponse(res, 201, product);
}
});
}
最后在我的角度模块脚本文件中:app.js
(function(){
var app = angular.module('ecommerce', []);
app.controller('ProductController',
['$scope','$http', function ($scope, $http){
console.log('Welcome to the ProductController');
/* some other code here */
$scope.addProduct = function (){
var newProduct = {
name: $scope.product.name,
category: $scope.product.category,
price: $scope.product.price,
picture: $scope.product.picture,
pictures: [],
quantity: 10,
status: "Pending",
date: Date.now(),
description: $scope.product.description,
owner: "Joel Alexandre Khang Zulbal"
};
console.log(newProduct);
alert("Passing variable...");
$http.post('/api/products', newProduct)
.then( function onSuccessCallback(){
$scope.products.push($scope.product);
alert("Success Insertion");
$scope.$apply();
}, function onErrorCallback (error){
console.log(error);
alert("Insertion failed!!");
});
$scope.product = {};
$scope.close();
}
/* some other code here */
}]);
})()
还有我的入门服务器点:app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var api = require('./app_api/routes/index');
var users = require('./routes/users');
require('./app_api/models/database.js');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/api', api);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
我真的不知道我在这里做错了什么!所以请伙计们帮帮我
答案 0 :(得分:0)
express.Router
,例如一个处理/users/get/1
和/users/list
的路由器,另一个处理/products/get/1
和{{{ 1}}。
在您的情况下,您可以跳过使用/products/list
。根据你所展示的内容,它会使事情过于复杂。试试这个:
express.Router