我似乎无法得到mongodb的回应.我在mongoose的帮助下使用node.js和mongodb.
在我的node.js应用程序中
mongoose.connect('mongodb://localhost:27017/myDB');
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var BlogPost = new Schema({
author : ObjectId,
title : String,
slug : { type: String, lowercase: true, trim: true },
content : String,
summary : String,
date : Date
})
var BlogModel = mongoose.model('BlogPost', BlogPost);
BlogModel.find({}, function(docs){
console.log(docs);
});
Run Code Online (Sandbox Code Playgroud)
如果我在mongo shell中键入show dbs,我会得到
admin (empty)
myDB 0.203125GB
local (empty)
test (empty)
Run Code Online (Sandbox Code Playgroud)
db.blogmodel.find()返回:
{ "_id" : ObjectId("50108d3df57b0e3375a20479"), "title" : "FirstPost" }
Run Code Online (Sandbox Code Playgroud)
是的,我确实有mongod在运行.
固定解决方案
var BlogModel = mongoose.model('blogmodel', BlogPost, 'blogmodel');
Run Code Online (Sandbox Code Playgroud)
它的工作原理是因为它(型号名称,模式名称,集合名称)
aar*_*ann 30
Mongoose使模型名称复数化,因此它find在"blogposts"集合而不是"blogpost"上运行.也就是说,你在mongo shell中的查询是在"blogmodel"集合中.在这种情况下:
var BlogModel = mongoose.Model("BlogModel", ..)
Run Code Online (Sandbox Code Playgroud)
或者将集合名称作为第三个参数传递:
var BlogModel = mongoose.model("BlogPost", schema, "blogmodel")
Run Code Online (Sandbox Code Playgroud)
BlogModel.find回调的第一个参数是err,第二个参数是docs.所以你的代码应该是:
BlogModel.find({}, function(err, docs){
console.log(docs);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12607 次 |
| 最近记录: |