猫鼬不按名称识别集合[重复]
Posted
技术标签:
【中文标题】猫鼬不按名称识别集合[重复]【英文标题】:mongoose not recognizing the collection by name [duplicate] 【发布时间】:2015-09-17 18:15:51 【问题描述】:这是我的代码:
var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'mcfly');
db.once('open', function()
var schema = new mongoose.Schema(
firstname: String,
lastname: String
);
var col = db.model('mathpeep', schema);
col.find(firstname: 'hey', function(err, Col)
console.log(Col);
);
)
我的 mongod 运行正常,我运行了“mango”并在集合“mathpeep”内的数据库“mcfly”中输入了几个条目。这段代码基本上是从它工作的另一个地方复制的,一直到变量名,所以我不知道出了什么问题。
问题是我的数据库看起来像这样:
> use mcfly
switched to db mcfly
> db.createCollection('mathpeep')
"ok" : 1
> show collections
mathpeep
system.indexes
> db.mathpeep.insert(firstname: 'hey', lastname: 'ayy')
WriteResult( "nInserted" : 1 )
> db.mathpeep.insert(firstname: 'aaa', lastname: 'aaaaa')
WriteResult( "nInserted" : 1 )
> db.mathpeep.find()
"_id" : ObjectId("5592e96566cf1404577ebe1b"), "firstname" : "hey", "lastname" : "ayy"
"_id" : ObjectId("5592e97b66cf1404577ebe1c"), "firstname" : "aaa", "lastname" : "aaaaa"
>
然而,上面的代码返回一个空文件 (?)。当我尝试使用该架构保存文件时也会发生同样的情况:脚本完成没有问题,但是当我使用 shell 检查数据库时,没有保存任何内容。我正在从其他地方复制代码,可以很好地保存和读取数据库。我还再次运行了 mongoose 安装,如果它没有正确安装,那么我不知道如何修复它。
没有错误:当我运行脚本时,它会打印:
[]
这就是发生的一切。
我只能假设我正在连接其他地方或其他东西,因此是问题名称。
谢谢
【问题讨论】:
编辑了问题名称,以便对像我这样不幸的人更有用 【参考方案1】:尝试这样连接:
var db = mongoose.createConnection('mongodb://localhost:27017/mcfly');
并像这样访问您的收藏:
var col = mongoose.model('mathpeep', new Schema( firstname: String, lastname: String ),
'mathpeep' ) //here goes your collection name;
【讨论】:
第一行只导致错误,但第二行(如另一个答案)解决了它。非常感谢你们俩 哦,我的错,可能是因为我没有放默认端口(27017)。【参考方案2】:我认为这是因为 mongoose 添加了 s
使其成为复数形式。所以它正在检查集合mathpeeps
。要明确告诉集合名称,请使用第三个参数:
var col = db.model('mathpeep', schema, 'mathpeep');
为了确保它在你的代码中添加这个查询是什么:
mongoose.set('debug', true);
【讨论】:
这解决了它。知道为什么它会做出如此难以理解的事情吗? 这是默认行为:mongoosejs.com/docs/guide.html#collection以上是关于猫鼬不按名称识别集合[重复]的主要内容,如果未能解决你的问题,请参考以下文章