2016-07-05 3 views
-1

Я использую средний и this tutorial.MEAN: Получение всей HTML-страницы вместо mongodb. Модель данных

Все работает нормально, за исключением того, что app.get('/api/todos/', function(req, res) в моем файле server.js возвращает всю мою HTML-страницу вместо моих данных todos из моей базы данных mongodb!

Я могу даже увидеть, как весь мой index.html попал в мой firebug viewer.

Если изменить app.get по app.post в функции server.js, я правильно получать модель TODO данных, и мои AngularJS интерфейсов показывают данные Todos правильно, но я хочу использовать GET , а не POST!

Это как app.get или часть AngularJS $http.get не работает вообще.

У вас есть идея?

Невероятно, что я почти уверен, что он работает на другом компьютере, и не так походит!

Это передний конец регулятора, как в учебнике:

var scotchTodo = angular.module('scotchTodo', []); 

function mainController($scope, $http) { 
    $scope.formData = {}; 


    $http.get('/api/todos/') 
     .success(function(data) { 
       $scope.todos = data; 

      console.log(data); 
     }) 
     .error(function(data) { 
      console.log('Error: ' + data); 
     }); 

    // Quand on soumets le formulaire ajouter, transmettre la chose à faire à l'api node 
    $scope.createTodo = function() { 
     $http.post('/api/todos', $scope.formData) 
      .success(function(data) { 
       $scope.formData = {}; // Supprimer le contenu du formulaire pour que l'utilisateur puisse en utiliser un autre. 
       $scope.todos = data; 
       console.log(data); 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }); 
    }; 

    // Supprimer une chose à faire après l'avoir vérifié. 
    $scope.deleteTodo = function(id) { 
     $http.delete('/api/todos/' + id) 
      .success(function(data) { 
       $scope.todos = data; 
       console.log(data); 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }); 
    }; 

} 

Это файл server.js, llike в учебнике:

// server.js 

// set up ======================== 
var express = require('express'); 
var app  = express();        // create our app w/ express 
var mongoose = require('mongoose');      // mongoose for mongodb 
var morgan = require('morgan');       // log requests to the console (express4) 
var bodyParser = require('body-parser');    // pull information from HTML POST (express4) 
var methodOverride = require('method-override');  // simulate DELETE and PUT (express4) 

// configuration ================= 

mongoose.connect('mongodb://localhost/nod');  // connect to mongoDB database on modulus.io 

app.use(express.static(__dirname + '/public'));     // set the static files location /public/img will be /img for users 
app.use(morgan('dev'));           // log every request to the console 
app.use(bodyParser.urlencoded({'extended':'true'}));   // parse application/x-www-form-urlencoded 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json 
app.use(methodOverride()); 

// Le serveur va se mettre à écouter avec cette commande (Taper node server.js dans la ligne de commande windows, sous le bon répertoire) ====================================== 
app.listen(8080); 
console.log("L app écoute sur le port 8080 dans les navigateurs"); 



// definire le modèle de données qui s'apelle todo qui veut dire "chose à faire" ================= 
var Todo = mongoose.model('Todo', { 
    text : String 
}); 


// routes ====================================================================== 

// application ------------------------------------------------------------- 
app.get('*', function(req, res) { 
    res.sendfile('./public/index.html'); //Charge la seule vue, c est angular qui s occupe du routing en front end 
}); 

// api --------------------------------------------------------------------- 
// obtenir tous les todo 
app.get('/api/todos/', function(req, res) { 

    // utiliser moongoose pour obtenir tous les todo dans la database 
    Todo.find(function(err, todos) { 

     // if there is an error retrieving, send the error. nothing after res.send(err) will execute 
     if (err) 
      res.send(err) 

     res.json(todos); // Retourne tous les todo au format json 
    }); 
}); 

// Créer un todo et retourner tous les todo après création 
app.post('/api/todos', function(req, res) { 

    // create a todo, information comes from AJAX request from Angular 
    Todo.create({ 
     text : req.body.text, 
     done : false 
    }, function(err, todo) { 
     if (err) 
      res.send(err); 

     // get and return all the todos after you create another 
     Todo.find(function(err, todos) { 
      if (err) 
       res.send(err) 
      res.json(todos); 
     }); 
    }); 

}); 

// supprimer un todo 
app.delete('/api/todos/:todo_id', function(req, res) { 
    Todo.remove({ 
     _id : req.params.todo_id 
    }, function(err, todo) { 
     if (err) 
      res.send(err); 

     // get and return all the todos after you create another 
     Todo.find(function(err, todos) { 
      if (err) 
       res.send(err) 
      res.json(todos); 
     }); 
    }); 
}); 

И, наконец, шаблон AngularJS является то же, что и в учебнике

ответ

0

О, хорошо!

, наконец, они ответили под учебник:

Я должен был заменить звезду '*' ничем Он преуспевает