为什么不显示任何创build在nodejs和mongoose的集合
我不知道当我在mongodb中创build一个新的集合时发生了什么,为了检查,我有这个代码
我在MongoDB中有这个数据
> use mongo switched to db mongo > db.users.find(); { "_id" : ObjectId("55431e3bdb99b7996f752f8f"), "name" : "David" } { "_id" : ObjectId("55431e42db99b7996f752f90"), "name" : "Juan" } >
这是我的app.js
var express = require('express'); var mongoose = require('mongoose'); var app = express(); //Connect to mongodb mongoose.connect("mongodb://localhost/mongo", function(err, res){ if(err) throw err; console.log("Connected to mongodb"); }); //Model mongoose.model('users', {name: String}); //Router app.get('/data', function(req, res){ mongoose.model('users').find(function(err, users){ res.send(users); }); }); //Server app.listen(3000, function(){ console.log("server running"); });
这是浏览器的结果
[{ “_id”: “55431e3bdb99b7996f752f8f”, “名”: “大卫”},{ “_ ID”: “55431e42db99b7996f752f90”, “名”: “胡安”}]
到现在为止还挺好。
当我在名为“testing”或其他名称的同一个数据库中创build一个新的集合,我可以findmongodb
> use mongo switched to db mongo > db.test.find(); { "_id" : ObjectId("55501179b5ae498fb42a19e3"), "name" : "Iron" } { "_id" : ObjectId("5550238d82553eae20688f6c"), "name" : "Batman" } >
我的app.js修改了新的集合
var express = require('express'); var mongoose = require('mongoose'); var app = express(); //Connect to mongodb mongoose.connect("mongodb://localhost/mongo", function(err, res){ if(err) throw err; console.log("Connected to mongodb"); }); //Model mongoose.model('test', {name: String}); //Router app.get('/data', function(req, res){ mongoose.model('test').find(function(err, test){ res.send(test); }); }); //Server app.listen(3000, function(){ console.log("server running"); });
这是浏览器的结果
[]
这是我的问题,为什么我的浏览器的结果是空的….请帮助我,我不知道如果我的db.test.find()有数据会发生什么,谢谢
mongoose会复制收集名称,除非您给它一个特定的名称使用。 所以,在封面下,它实际上是试图使用tests
作为集合名称。 添加名称作为model
声明的第三个参数。
mongoose.model('test', {name: String}, 'test');