簡體   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