为什么不显示在nodejs和mongoose中创建的任何集合

时间:2015-05-11 03:53:13

标签: javascript node.js express mongoose

我不知道当我在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()有数据会发生什么,谢谢

1 个答案:

答案 0 :(得分:1)

Mongoose会复制集合名称,除非您为其指定要使用的特定名称。因此,在实际上,它实际上试图使用tests作为集合名称。将名称添加为model声明的第三个参数。

mongoose.model('test', {name: String}, 'test');