$http.post找不到问题
大家下午好 我正在做一个学校项目,用平均堆栈创建一个应用程序,我遇到了路由问题。 我正在使用此处找到的登录和注册应用程序作为我工作的基础: 基本上,我无法将从创建的表单中获取的数据发布到数据库中。 如果我让创建部分工作,那么我将能够继续我的项目。代码如下: 控制器$http.post找不到问题,post,runtime-error,mean-stack,Post,Runtime Error,Mean Stack,大家下午好 我正在做一个学校项目,用平均堆栈创建一个应用程序,我遇到了路由问题。 我正在使用此处找到的登录和注册应用程序作为我工作的基础: 基本上,我无法将从创建的表单中获取的数据发布到数据库中。 如果我让创建部分工作,那么我将能够继续我的项目。代码如下: 控制器 (function () { 'use strict'; function Controller(UserService, NoteService, FlashService) { var vm =
(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(note)会返回我在控制台中想要的内容
在服务器端,我有另一个用于处理错误的控制器:
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'))
将允许我的post请求将我的notes对象发送到服务器端,发送到“/api/notes”),但我不太确定这一切是如何协同工作的
我希望任何人都能帮助我,尽管我给出的代码很长。
我只是从卑鄙开始,不知道我做错了什么
提前感谢您的回答。您能用较小的代码集复制问题吗?我试图减少它。剩下的所有内容都与不适用于我的createNote()函数有关!