作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
person 集合中有 3 个文档,但我找不到()
mongodb 外壳:
> use test;
switched to db test
> db.person.find();
{ "_id" : ObjectId("527f18f7d0ec1e35065763e4"), "name" : "aaa", "sex" : "man", "height" : 180 }
{ "_id" : ObjectId("527f1903d0ec1e35065763e5"), "name" : "bbb", "sex" : "man", "height" : 160 }
{ "_id" : ObjectId("527f190bd0ec1e35065763e6"), "name" : "ccc", "sex" : "woman", "height" : 160 }
我的 nodejs 代码:
var mongoose = require('mongoose');
var db = mongoose.createConnection('mongodb://uuu:ppp@localhost:27017/test');
//mongoose.set('debug', true);
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
console.log("connection success!");
mongoose.model('person', mongoose.Schema({ name: String}),'person');
var out = db.model('person');
//console.log(out);
out.find({},function(err, obj) {
console.log(obj);
console.log(1);
});
});
但是,结果是: 连接成功! [] 1
最佳答案
问题是当你使用createConnection
时,你需要使用创建连接的.model
方法,而不是mongoose.model
:
var db = mongoose.createConnection(...);
// wrong:
mongoose.model('person', mongoose.Schema({ name: String}),'person');
// right:
db.model('person', mongoose.Schema({ name: String}),'person');
// perform query:
db.model('person').find(...);
原因是,据我了解,模型与连接“相关联”。当您使用 mongoose.model
时,该模型与默认连接相关联,但您没有使用它(您使用的连接是通过 createConnection
显式创建的).
显示这一点的另一种方法是使用 modelNames
:
// wrong:
mongoose.model('person', mongoose.Schema({ name: String}),'person');
console.log('default conn models:', mongoose.modelNames()); // -> [ 'person' ]
console.log('custom conn models:', db.modelNames()); // -> []
// right:
db.model('person', mongoose.Schema({ name: String}),'person');
console.log('default conn models:', mongoose.modelNames()); // -> []
console.log('custom conn models:', db.modelNames()); // -> [ 'person' ]
关于node.js - 如何用nodejs和mongoose查找文档,为什么没有结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886736/
我是一名优秀的程序员,十分优秀!