Как разместить данные в коллекцию mongo с помощью Mean stack?

У меня есть объект, который содержит firstname и lastname от клиента он печатается в клиентской фабрике, поэтому я новичок в разработке бэкенда, поэтому я создал схему пользователя и api для публикации данных, но это вызывает ошибку 404 . Ошибка, упомянутая ниже в вопросе. Есть идеи, что реализовано неправильно ?

clientFactory.js

 create : function(userData) {
            console.log('factory',userData);
            return $http.post('/api/users', userData);

        }

Серверный код

app > маршруты.js

  module.exports = function(app) {

      app.use('api/users', require('./api/user'));
      app.get('*', function(req, res) {
          res.sendfile('./public/views/index.html'); // load our public/index.html file
          // res.sendFile(path.join(__dirname, ''../public/views/index.html'')); 
      });

  };

Папки в разделе app > api > > пользователь

пользователь.индекс.js

var express = require('express');
var controller = require('./user.controller');

var router = express.Router();

router.get('/', controller.index);
router.post('/',controller.create);

module.exports = router;

пользователь.модель.js

var mongoose = require('bluebird').promisifyAll(require('mongoose'));

var UserSchema = new mongoose.Schema({
  firstName: String,
  lastName: String
});

module.exports = mongoose.model('User', UserSchema);

пользователь.контроллер.js

exports.create = function(req, res) {
  console.log(req.body);
  User.createAsync(req.body)
    .then(responseWithResult(res, 201))
    .catch(handleError(res));
}

Ошибка

angular.js:12410 POST http://localhost:8080/api/users 404 (Not Found)
(anonymous) @ angular.js:12410
p @ angular.js:12155
(anonymous) @ angular.js:11908
(anonymous) @ angular.js:16648
$eval @ angular.js:17972
$digest @ angular.js:17786
$apply @ angular.js:18080
(anonymous) @ angular.js:26749
cg @ angular.js:3613
d @ angular.js:3601
angular.js:14328 Possibly unhandled rejection: {"data":"Cannot POST /api/usersn","status":404,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"/api/users","data":{"firstName":"Kun","lastName":"Zhang"},"headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json;charset=utf-8"}},"statusText":"Not Found"}

1 ответ

  1. Трассировка стека угловых ошибок очень ясна.
    Вы не обрабатываете эту конкретную конечную точку для запроса POST в маршрутизаторе express.

    Таким образом, сервер выдает ошибку 404, как и должно.

    Попробуйте что-то вроде этого:

    router
        .post('/api/users', function (req, res) {
           // do what you want with your user here
        })
    

    С помощью express (и NodeJS) необходимо явно указать каждый доступ к ресурсам сервера.

    Как боковое Примечание, Вы довольно близки к этому, но стараетесь сохранить свою логику приложения простой для обслуживания.