node.js - Mongoose 无法按名称识别集合

标签 node.js mongodb mongoose

<分区>

这是我的代码:

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 安装,如果它没有正确安装,那么我不知道如何修复它。

没有错误:当我运行脚本时,它会打印:

[]

这就是所有发生的事情。

我只能假设我正在连接其他地方或其他东西,因此问题名称。

谢谢

最佳答案

我想是因为mongoose加了一个s让它变成复数。所以它正在检查集合 mathpeeps。要明确告诉集合名称,请使用第三个参数:

var col = db.model('mathpeep', schema, 'mathpeep');

要确定查询是什么,请在您的代码中添加:

mongoose.set('debug', true);

关于node.js - Mongoose 无法按名称识别集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31146930/

相关文章:

javascript - 使用正则表达式使用 mongoose 进行不区分大小写的查找

javascript - 我怎样才能在 Node js中的全局变量中分配 Mongoose 结果?

node.js - 如何使用 Node 删除响应中多余的斜杠?

javascript - Node : Can you use plain Javascript objects as an in-memory datastore?

javascript - 动态更改 MongoDB ReplicaSet 中的 Node

arrays - 如何从 Mongoose 数组中获取数据?

javascript - 使用 mongoose 插入 MongoDB 时在键中使用 "@"

javascript - 将 jQuery 库添加到 WebStorm

node.js - 在 Windows 7 上为 phantomjs 安装 "weak"模块时,node-gyp 重建失败

MongoDB最佳实践: nesting