[英]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.