我不知道当我在mongodb中创建一个新集合时会发生什么,例如,我有这个代码
我在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”, “名称”: “涓”}]
到目前为止一切顺利。
当我在名为“test”或其他名称的同一个数据库中创建一个新集合时,我可以找到mongodb
> 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()有数据会发生什么,谢谢
答案 0 :(得分:1)
Mongoose会复制集合名称,除非您为其指定要使用的特定名称。因此,在实际上,它实际上试图使用tests
作为集合名称。将名称添加为model
声明的第三个参数。
mongoose.model('test', {name: String}, 'test');