0

我在使用mongodb数据库和mongodb遵循node.js中的教程时遇到问题。当我在 mongo 控制台中运行我的数据库命令时,我可以看到我的数据库 nodetest1 有 3 个条目,但是当我这样做时它什么也不返回。

router.get('/', function(req, res, next) {
    var db = req.db;
    var collection = db.get('usercollection');
    collection.find({},{},function(e,docs){
        res.send(docs);
    });
});

当我使用 find 方法时,这是来自 mongo 控制台的打印。

> db.usercollection.find().pretty()
{
        "_id" : ObjectId("55b17a551efb190c06c38d31"),
        "username" : "testuser1",
        "email" : "testuser1@testdomain.com"
}
{
        "_id" : ObjectId("55b17a5f1efb190c06c38d32"),
        "username" : "testuser2",
        "email" : "testuser2@testdomain.com"
}
{
        "_id" : ObjectId("55b17a5f1efb190c06c38d33"),
        "username" : "testuser3",
        "email" : "testuser3@testdomain.com"
}

如果您需要更多信息,我会给您。我希望你能帮助我,我已经在这个问题上停留了 45 分钟,试图找到解决方案。

更新:这就是mongod的启动方式

mongod --dbpath "C:\Users\Victor\OneDrive\Programming\NodeJS\DatabaseSetup\data"

我与数据库的连接在 app.js 中:

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/DatabaseSetup');

app.use(function(req,res,next){
  req.db = db;
  next();
});

当我在 localhost:3000/userlist 上运行我的程序时,我没有从数据库中获得任何数据,但控制台写道:

2015-07-24T03:13:28.127+0200 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:57961 #151 (6 connections now open)
4

1 回答 1

1

根据您在上面列出的信息,我愿意冒险数据库连接字符串不会按照您认为的方式工作。

你说你自己正在启动一个这样的mongod服务器实例:

mongod --dbpath "C:\Users\Victor\OneDrive\Programming\NodeJS\DatabaseSetup\data"

然后你可以连接到shell,即:

mongo

一切都很好。

这里的问题是,默认情况下您实际连接的“数据库”并且没有其他声明称为“测试”,而不是作为存储物理数据文件的路径的名称。

因此,要将僧侣连接到该数据,然后执行:

var db = require('monk')('localhost/test');

它连接到与存储数据的位置相同的数据库名称。

如果您想创建不同的数据库名称,请执行以下操作:

mongo
> use DatabaseSetup

或者只是从命令行:

mongo DatabaseSetup

在任何一种情况下,这都会切换包含的默认数据库。然后您可以在该命名空间中创建您的数据。

但否则您的数据可能驻留在“测试”中,所以这就是您应该使用的。


只需在那里重新阅读您的第一句话。也许数据库容器名称是“nodetest1”,因为你说的是​​,因此:

var db = require('monk')('localhost/nodetest1');
于 2015-07-24T02:32:10.733 回答