Node.js, 快递, Mongodb using monk database empty

Node.js, Express, Mongodb using monk database empty

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

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"

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

mongo

一切都很好。

这里的问题是你实际上默认连接的 "database" 没有其他声明被称为 "test" 而不是你存储物理数据文件的路径名称.

因此,要将 monk 连接到该数据,请执行以下操作:

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

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

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

mongo
> use DatabaseSetup

或仅从命令行:

mongo DatabaseSetup

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

但除此之外,您的数据可能驻留在 "test" 中,因此您应该使用它。


只需重读那里的第一句话。也许数据库容器名称是 "nodetest1" ,因为那是你所说的,因此:

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