Я использую средний и 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 является то же, что и в учебнике