繁体   English   中英

Node.js,Express,Mongodb使用和尚数据库为空

[英]Node.js, Express, Mongodb using monk database empty

我在使用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)

根据上面列出的信息,我很可能会发现数据库连接字符串无法按您认为的方式工作。

您说自己正在启动mongod服务器的实例,如下所示:

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

然后,您可以连接到外壳,即:

mongo

一切都很好。

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

因此,将和尚连接到该数据,然后执行以下操作:

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

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

如果要创建其他数据库名称,请执行以下操作:

mongo
> use DatabaseSetup

或者只是从命令行:

mongo DatabaseSetup

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

但是否则,您的数据可能会驻留在“测试”中,因此您应该使用该数据。


只需在那里重新阅读您的第一句话。 由于您声明的是,数据库容器名称可能是“ nodetest1”,因此:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM