[英]Why am I getting data from an empty mongodb database?
我正在做一个待办事项应用程序,在我的代码中,我使用ng-repeat
指令来创建与数据库中一样多的待办事项框。 但就我而言,即使数据库为空,也要获得五个待办事项框。 它可能与我正在调用的loadData
函数有关,但我无法弄清楚。 这是我在浏览器中得到的图像以及调试器中的数据的图像。 。 当我在localhost:3000 / api / todos上执行get请求时,我得到[]
是正确的,因为数据库为空。 有任何想法吗?
这是我的html
文件的一部分:
<div class="row">
<h1>Things you have to do</h1>
<li ng-repeat="todo in todos">
<p id="todobox"> {{ todo.name }} </p>
</li>
<form>
<input type="text" placeholder="I need to do..." ng-model="formData.newTodo" required>
<button ng-click="addTodo(formData)">Add</button>
</form>
</div>
这是我的控制器:
var app = angular.module('myApp', ['navigationDirective']);
app.controller('MainController', ['$scope','$http', function($scope, $http){
$scope.formData = {};
$scope.loadData = function(){
$http.get('/api/todos')
.then(function(data){
console.log('Data:' + data);
$scope.todos = data;
});
};
//call the loadData function that returns the data from the json file
$scope.loadData();
//Add a new todo to the database
$scope.addTodo = function(){
$scope.formData = {
name: $scope.formData.newTodo
};
$http.post('/api/todos', $scope.formData)
.then(function(data){
console.log($scope.formData.name);
$scope.todos = data;
$scope.formData = {};
console.log(data);
});
}
}]);
这是我的server.js
文件:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
//connect to database
mongoose.connect('mongodb://localhost:27017/tododbtest');
// set static files location
// used for requests that our frontend will make
app.use(express.static(__dirname + '/public'));
//app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
//define our model for the todos
var Todo = mongoose.model('Todo', {
name: String,
//maybe change it to bool later
//checked: boolean
});
//when I get a get request I'm going to send
//the index.html file
app.get('/', function(req, res){
res.sendFile( __dirname + '/public/index.html');
});
//get all the todos from the database
app.get('/api/todos', function(req, res){
Todo.find(function(err, todos){
if(err)
res.send(err)
console.log(todos);
res.json(todos);
});
});
//create a todo
app.post('/api/todos', function(req, res){
console.log("Req.body.name:" + req.body.name);
Todo.create({name: req.body.name, checked: false},
function(err, todo){
if(err) res.send(err);
Todo.find(function(err, todos){
if(err) res.send(err);
res.json(todos);
});
});
});
app.listen(3000);
$http
服务返回一个承诺,该承诺将解析为一个响应对象。 Data
是响应对象的五个属性之一。 将todos
设置为response.data
。
$http.post('/api/todos', $scope.formData)
.then(function(response){
console.log($scope.formData.name);
$scope.todos = response.data;
$scope.formData = {};
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.