$ http.post无法找到问题

时间:2017-04-28 17:23:08

标签: post runtime-error mean-stack

大家下午好。

我正在使用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并且不知道我做错了什么。

先谢谢你的回答。

0 个答案:

没有答案