大家下午好。
我正在使用MEAN堆栈创建应用程序的学校项目,并且我遇到路由问题。 我使用此处的登录和注册应用程序作为我工作的基础:http://jasonwatmore.com/post/2015/12/09/mean-stack-user-registration-and-login-example-tutorial 基本上,我无法将从我创建的表单中获取的数据发布到我的数据库中。 如果我让创作部分工作,那么我将能够继续处理我的项目。这是代码:
控制器
(function () {
'use strict';
function Controller(UserService, NoteService, FlashService) {
var vm = this;
vm.note = null;
function createNote() {
NoteService.Create(vm.note, vm.user)
.then(function () {
FlashService.Success('Note created');
})
.catch(function (error) {
FlashService.Error(error);
});
}
vm.createNote = createNote;
function initController() {...}
initController();
}
angular.module('app').controller('Home.IndexController', Controller);
}());
然后我们有我正在调用的服务,NoteService
(function () {
'use strict';
function Service($http, $q) {
var service = {};
function Create(note, user) {
return $http.post('/api/notes', note).then(handleSuccess, handleError);
}
service.Create = Create;
return service;
}
angular
.module('app')
.factory('NoteService', Service);
}());
这是$ http.post函数不起作用:/ api / notes无法找到(浏览器控制台上的错误404)我确信我的对象注释至少会得到这个请求,因为添加了一个console.log(注释)就在返回控制台中我想要的内容之前。
在服务器端,我有另一个控制器来处理错误:
var noteService = require('services/notes.service');
//routes
router.post('/create', createNote);
module.exports = router;
function createNote(req, res) {
noteService.create(req.body)
.then(function () {
res.sendStatus(200);
})
.catch(function (err) {
res.status(400).send(err);
});
}
服务器端的服务与数据库讨论:
var mongo = require('mongoskin');
var db = mongo.db(config.connectionString, { native_parser: true });
db.bind('notes');
var service = {};
service.create = create;
module.exports = service;
function create(noteParam, userParam) {...}
我的server.js文件如下所示:
require('rootpath')();
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(session({ secret: config.secret, resave: false, saveUninitialized: true }));
// use JWT auth to secure the api
app.use('/api', expressJwt({ secret: config.secret }).unless({ path: ['/api/users/authenticate', '/api/users/register'] }));
// routes
app.use('/login', require('./controllers/login.controller'));
app.use('/register', require('./controllers/register.controller'));
app.use('/app', require('./controllers/app.controller'));
app.use('/api/users', require('./controllers/api/users.controller'));
app.use('/api/notes', require('./controllers/api/notes.controller'));
// make '/app' default route
app.get('/', function (req, res) {
return res.redirect('/app');
});
// start server
var server = app.listen(3000, function () {
console.log('Server listening at http://' + server.address().address + ':' + server.address().port);
});
我认为server.js文件中的这一行是:app.use(' / api / notes',require(' ./ controllers / api / notes.controller')) 允许我的发布请求将我的笔记对象发送到服务器端,发送到' / api / notes')但我不太确定这一切是如何协同工作的。
我希望有人可以帮助我,即使我提供的代码很长。 我刚刚开始使用MEAN并且不知道我做错了什么。
先谢谢你的回答。