Mongo集合没有.find方法

时间:2013-12-14 22:45:59

标签: javascript mongodb express

我在MongoLab上有一个数据库。它有几个系列。除了一个工作以外一个集合称为“selectopts”。它有两个文件。我可以清楚地看到这两个文件。

在我的快递代码中,我有......

var db = require('mongojs');
db.connect('mongodb://xxxx:xxxx@ds053xxx.mongolab.com:53xxx/rednecks',['selectopts']);


exports.selects = function (req, res) {
    db.selectopts.find(function (err, s) {
        if (err) return;
        res.json(s);
    });
};

始终在db.selectopts.find...出现错误, TypeError:无法调用未定义的方法'find'。这个完全相同的愚蠢简单代码适用于其他四个集合。为什么这一个系列不是从MongoLab回来的?

我完全被难倒了。

修改...

尝试db.collection('selectopts')。find(...并得到此错误......

enter image description here

再次编辑...

以下是MongoLab上selectopts集合中的两个文档。你看到文档有问题吗?...

enter image description here

编辑x 3 ...

这是正确/有效的mongo连接设置代码...

var mongojs = require('mongojs');
var db = mongojs.connect(
    'xxx:xxx@ds053xxx.mongolab.com:53xxx/rednecks',
);

看主要区别? (SMFH): - /

2 个答案:

答案 0 :(得分:1)

有时当我在SO发帖时,我没有从任何一个回复中收到确切的实际答案,但不知何故,你们总是引导我走向答案。在这种情况下,这是程序员的愚蠢。我在路由js文件顶部的代码是错误的。你可以在这篇文章的顶部看错了。我编辑并添加了正确的语法,这使得一切都工作正常。

为了消除这种类型的重复/语法/非DRY笨拙,我将mongo连接线移动到一个单独的database.js文件中,并将其放在路径文件的顶部。天才吧?!? :-D

“谢谢”x 100所有回复!你总是让我回到正轨: - )

答案 1 :(得分:0)

使用以下样式连接:

var MongoClient = require('mongodb').MongoClient;
var db;

MongoClient.connect(
    'mongodb://xxxx:xxxx@ds053xxx.mongolab.com:53xxx/rednecks', 
    {auto_reconnect: true}, 
    function(e, database)
{
  db = database;
});


exports.selects = function (req, res) {
    db.selectopts.find(function (err, s) {
        if (err) return;
        res.json(s);
    });
};