【发布时间】:2015-09-15 07:06:15
【问题描述】:
我正在尝试做的事情:将我的 mongolab 数据库连接到我的 ionic 应用程序。 (我会使用 Firebase,但 Firebase 没有我需要的文本搜索)。
我按照 (https://scotch.io/tutorials/creating-a-single-page-todo-app-with-node-and-angular) 中的示例进行了一些指导。
但是,我收到了错误:
加载资源失败:服务器响应状态为 404 (未找到)http://localhost:8100/api/todos
我的文件结构: -项目
+-www
+---js
------app.js
------server.js
------cordova.js
+-----controllers
+---css
+---img
+---lib
+---templates
我知道我可能遗漏了一些基本的东西。我不明白我的 server.js 是如何被 ionic 加载的?
这是我的 server.js 的一个 sn-p(只是相关部分)
// 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)
var uriUtil = require('mongodb-uri');
// configuration =================
var mongodbUri = 'mongodb://<myusername>:<mypass>@ds036648.mongolab.com:36648/<mydb>';
var mongooseUri = uriUtil.formatMongoose(mongodbUri);
mongoose.connect(mongooseUri); // connect to mongoDB database on modulus.io
// listen (start app with node server.js) ======================================
app.listen(8100);
console.log("App listening on port 8100");
// define model =================
var Todo = mongoose.model('Todo', {
text : String
});
// create todo and send back all todos after creation
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);
});
});
});
我正在使用的html:
<!-- FORM TO CREATE TODOS -->
<div id="todo-form" class="row">
<div class="col-sm-8 col-sm-offset-2 text-center">
<form>
<div class="form-group">
<!-- BIND THIS VALUE TO formData.text IN ANGULAR -->
<input type="text" class="form-control input-lg text-center" placeholder="I want to buy a puppy that will love me forever" ng-model="formData.text">
</div>
<!-- createToDo() WILL CREATE NEW TODOS -->
<button type="submit" class="btn btn-primary btn-lg" ng-click="createTodo()">Add</button>
</form>
</div>
</div>
我的控制器:
angular.module('starter')
.controller('todosController', function($scope,$http) {
$scope.formData = {};
// when submitting the add form, send the text to the node API
$scope.createTodo = function() {
$http.post('/api/todos', $scope.formData)
.success(function(data) {
$scope.formData = {}; // clear the form so our user is ready to enter another
$scope.todos = data;
console.log(data);
})
.error(function(data) {
console.log('Error: ' + data);
});
};
【问题讨论】:
-
你的 ionic 服务器和你的 API 服务器应该是 2 个不同的服务器,这行 $http.post('/api/todos', $scope.formData) 看起来很奇怪,因为你应该请求另一个服务器跨度>
-
你也在节点上运行 server.js 或类似的东西吗?
标签: angularjs mongodb mongoose ionic-framework