gpt4 book ai didi

javascript - 无法使用 Node.js 从 mongoDB 检索数据

转载 作者:行者123 更新时间:2023-12-03 10:41:17 24 4
gpt4 key购买 nike

我对 Node.js 很陌生,并且我有这个项目。基本上我有一些数据位于 mongoDB 集合(“数据”)中,我试图获取该数据并将其显示在浏览器上。

这是我到目前为止所得到的;

    var MongoClient = require('mongodb').MongoClient
,format = require('util').format;
var sys = require ("sys");
my_http = require("http");

my_http.createServer(function(request, response){
sys.puts("Touched !!");
response.writeHeader(200, {"Content-Type": "text/plain"});
response.write(extractData()).toString();
response.end();
}).listen(8080);
sys.puts("Server is running on 8080"); // Server kicks in...np

function extractData(){

MongoClient.connect('mongodb://127.0.0.1:27017/mongoDB', function(err, db){
if (err){
console.log("Can't Connect to DB !!");
}else {
console.log("Connected to DB !!"); // connects to DB, np
db.data.find({}, function(err, data){ // .find is the problem
if (err || !data) console.log("No Data Found");
else data.forEach(function (data){
console.log(data);
});
}).toArray();
}
});
}

在我运行“node server.js”并刷新已经打开的 localhost:8080 后,我得到了这个;

Server is running on 8080
Touched !!
Touched !!
Connected to DB !!

d:\Projects\SCRIPTS\mdp.scripts.testing-tools\jsFinderWmongoDB\node_modules\mongodb\lib\mongodb\mongo_client.js:475
throw err
^
TypeError: Cannot call method 'find' of undefined
at d:\Projects\SCRIPTS\mdp.scripts.testing-tools\jsFinderWmongoDB\server.js:21:21
at d:\Projects\SCRIPTS\mdp.scripts.testing-tools\jsFinderWmongoDB\node_modules\mongodb\lib\mongodb\mongo_client.js:4
72:11
at process._tickCallback (node.js:415:13)

不明白为什么.find()有问题当然无法显示任何数据...

有什么想法吗?

编辑:

嗯,我们确实取得了进展。我做了一些改变。

当前代码:

function extractData(){

MongoClient.connect('mongodb://127.0.0.1:27017/mongoDB', function(err, db){
if (err){
console.log("Can't Connect to DB !!");
}else {
sys.puts("Connected to DB !!"); // connects to DB, np
db.collection('data').find({}, function(err, data){
if (err || !data) console.log("No Data Found");
//else db.collection('data').forEach(function (data){
// console.log(data);
//});
});//.toArray();
}
});
}

浏览器响应“未定义”

我猜测“extractData”函数没有返回合法的内容。因此,集合集“数据”返回空。

是的,我又检查了一次,数据集中有数据。

最佳答案

您需要先设置要使用的集合,然后才能对其执行任何操作。

var collection = db.collection('data');
collection.find({},function(err,data){
console.log(data);
});

这就是你如何做到的。

更新 ** 这就是我使用 Express 完成第一个 mongoDB 操作的方式可能对你有帮助。

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

app.get('/userlist', function(req, res) {
var db = req.db;
var collection = db.get('usercollection');
collection.find({},{},function(e,docs){
res.render('userlist', {
"userlist" : docs
});
});
});

关于javascript - 无法使用 Node.js 从 mongoDB 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com