为什么不显示在 nodejs 和 mongoose 中创建的任何集合
why not show any collection created in nodejs and 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","name":"David"},{"_id":"55431e42db99b7996f752f90","name":"Juan"}]
到目前为止一切顺利。
当我在同一个数据库中创建一个名为 "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() 有数据会发生什么,谢谢
Mongoose 会将集合名称复数化,除非你给它一个特定的名称来使用。所以,在幕后,它实际上是在尝试使用 tests
作为集合名称。添加名称作为 model
声明的第三个参数。
mongoose.model('test', {name: String}, 'test');
我不知道在 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","name":"David"},{"_id":"55431e42db99b7996f752f90","name":"Juan"}]
到目前为止一切顺利。
当我在同一个数据库中创建一个名为 "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() 有数据会发生什么,谢谢
Mongoose 会将集合名称复数化,除非你给它一个特定的名称来使用。所以,在幕后,它实际上是在尝试使用 tests
作为集合名称。添加名称作为 model
声明的第三个参数。
mongoose.model('test', {name: String}, 'test');