无法从MongoDB数据库获取数据的Web应用程序

我是使用MongoDB的新手。 目前,我正在制作一个需要一些数据存储的Web应用程序。 我在本地主机:3000上运行的Node.js上build立了一个HTTP服务器。 我还使用Vagrant和VirtualBox构build了一个虚拟开发环境。 我正在从PuTTy访问Mongo shell(如果这是相关的)。 在合并MongoDB之前,它正常工作,因为我在Node.js程序内存中存储数据。

这个networking应用程序是一个在线待办事项列表。 我得到的第一个错误是获取路线。 我已经插入Mongo数据库的“待办事项”列表不会出现在本地主机的网站上。 它似乎没有从数据库中获取数据。 我得到的第二个错误是邮政路线。 当我通过本地主机上的用户界面插入“待办事项”并刷新页面时,本地主机上的待办事项列表将更新为特定的待办事项(但不包括我插入数据库中的待办事项)。 但是,它似乎没有将其添加到数据库中,我仍然在控制台上得到这个错误:

vagrant@precise32:~/app$ node server.js { description: 'descTest3', tags: [ 'tagTest3' ] } Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html 

我不知道为什么我得到这个错误,因为我似乎没有使用任何承诺。

server.js

 var express = require("express"), http = require("http"), app = express(), mongoose = require("mongoose"); app.use(express.static(__dirname + "/client")); app.use(express.urlencoded()); mongoose.connect('mongodb://localhost/WatNext');//connect to the WatNext data store in mongoDB var ToDoSchema = mongoose.Schema({ "description": String, "tags": [ String ] //array of Strings }); var ToDo = mongoose.model("ToDo", ToDoSchema) http.createServer(app).listen(3000); //get and post routes: app.get("/toDos.json", function (req, res) { ToDo.find({}, function (err, toDos) { if (err != null){ console.log(err); } res.json(toDos); }); }); app.post("/todos", function (req, res) { console.log(req.body); var addedToDo = new ToDo({"description" : req.body.description, "tags" : req.body.tags}); //save function saves object into the database addedToDo.save(function (err, result) { if (err != null){//if there is an error console.log(err); res.send("ERROR SAVING"); } else { ToDo.find({}, function (err, result) { if (err != null){//if there is an error in finding res.send("ERROR FINDING"); } res.json(result); }); } }); }); 

app.js

 var main = function (toDoObjects) { //do stuff with ToDoObjects including outputting the list of ToDos }; $(document).ready(function() { $.getJSON("toDos.json", function(toDoObjects) { main(toDoObjects); }) }); 

蒙戈壳

 > show dbs WatNext 0.0625GB local 0.03125GB > use WatNext switched to db WatNext > show collections; system.indexes toDoCollection todos > db.toDoCollection.find(); { "_id" : ObjectId("58b38dd8fb355f57162d9cf1"), "description" : "Get groceries and eat afterwards", "tags" : [ "shopping", "chores" ] } { "_id" : ObjectId("58b38dd8fb355f57162d9cf2"), "description" : "Make up some new To-Dos", "tags" : [ "writing", "work" ] } { "_id" : ObjectId("58b38dd8fb355f57162d9cf3"), "description" : "Prep for Monday's class", "tags" : [ "work", "teaching" ] } { "_id" : ObjectId("58b38dd8fb355f57162d9cf4"), "description" : "Answer emails", "tags" : [ "work" ] } { "_id" : ObjectId("58b38dd8fb355f57162d9cf5"), "description" : "Take April to the park", "tags" : [ "chores", "pets" ] } { "_id" : ObjectId("58b38dd8fb355f57162d9cf6"), "description" : "Finish writing this book", "tags" : [ "writing", "work" ] } 

编辑 :我发现这只是一个错误的命名。

我也发现了

 mongoose.Promise = require("bluebird"); 

解决了承诺错误的问题。 记得先安装模块:

 npm install --save bluebird 

我发现什么是错的。 这是GET和POST路由的命名错误。 应该是:

 app.get("/todos.json", function (req, res) { //get the data from the collection called 'todos' in MongoDB 

以及:

 $.getJSON("todos.json", function(toDoObjects) { 

我应该使用todos集合而不是toDoCollection

  "description" : "descTest1", "_id" : ObjectId("58b39a1fb1a30305075408fa"), "tags" : [ "tagTest2" ], "__v" : 0 } { "description" : "descTest2", "_id" : ObjectId("58b4c837d47a5604c7c0609a"), "tags" : [ "tagsTest2" ], "__v" : 0 } { "description" : "descTest3", "_id" : ObjectId("58b4ca0491f4c804d200cda9"), "tags" : [ "tagTest3" ], "__v" : 0 } { "description" : "descTest4", "_id" : ObjectId("58b4e636b71d0a05ebb7a71a"), "tags" : [ "tagTest4" ], "__v" : 0 } { "description" : "descTest5", "_id" : ObjectId("58b60211428520053a4714ed"), "tags" : [ "tagTest5" ], "__v" : 0 } { "_id" : ObjectId("58b6037839e65d96e13cf68e"), "description" : "descTestMONGO", "tags" : [ "tagTestMONGO" ] } { "_id" : ObjectId("58b605b339e65d96e13cf690"), "description" : "Take April to the park", "tags" : [ "chores", "pets" ] }