我正在尝试使用 nodejs 从 mongodb 集合中检索数据,但我必须请求两次才能获得正确的信息
Posted
技术标签:
【中文标题】我正在尝试使用 nodejs 从 mongodb 集合中检索数据,但我必须请求两次才能获得正确的信息【英文标题】:I am trying to retrieve data from mongodb collection using nodejs but i have to request it twice to get the correct information 【发布时间】:2020-08-06 04:04:09 【问题描述】:这是我的代码: 我必须请求两次才能获取数据。任何问题?谢谢
var http = require('http');
var url = require('url');
var input = "";
const MongoClient = require('mongodb').MongoClient;
const url2 = "mongodb+srv://ramaty01:password@cluster0-hi4fv.mongodb.net/test?retryWrites=true&w=majority";
http.createServer(function(req, res)
if (req.url === '/favicon.ico')
res.writeHead(200, 'Content-Type': 'image/x-icon' );
res.end();
console.log('favicon requested');
return;
res.writeHead(200, 'Content-Type': 'text/html');
res.write(
"<html><head><title> MongoDB and NodeJS</title></head>" +
"<body><h1> COMPANY STOCK STICKER</h1><form>" +
"<input type='radio' id='company' name='types' value='company' required>" +
"<label for='company'>Company Name</label><br>" +
"<input type='radio' id='stock' name='types' value='stock'>" +
"<label for='stock'>Stock Ticker</label><br><br>" +
"<label for='txt'>Input: </label>" +
"<input type='text' id='txt' name='txt'><br><br>" +
"<input type='submit' value='Submit'>" +
"</form><div id='output'></div></body></html>"
);
var qobj = url.parse(req.url, true).query;
//var items;
mong(qobj);
res.write(input);
res.end()
input= "";
).listen(8080);
function mong(qobj)
MongoClient.connect(url2, useUnifiedTopology: true , function(err, db)
if(err) console.log("Connection err: " + err); return;
var dbo = db.db("Company");
var coll = dbo.collection('companies');
var query;
var inp = qobj.txt;
if (qobj.types == "company")
query = "company_name" : inp;
else if (qobj.types == "stock")
query = "stock_ticker" : inp;
var s = coll.find(query,projection: "company_name":1, "stock_ticker":1, "_id":0).stream();
s.on("data", function(item) input = input + item.company_name + " " + item.stock_ticker;);
s.on("end", function() console.log("end of data"); db.close(););
);
【问题讨论】:
【参考方案1】:首先,我建议您立即更改您的monogdb atlas 密码,并且下次您在网上发布任何包含敏感信息的内容时要更加小心。
话虽如此,我已经使用 mongodb Atlas 工作了一段时间,我注意到连接通常需要一些时间,这会在您启动服务器时引入一些明显的延迟。这可能是正在发生的事情,并且由于从您的代码中我看不到您的本地服务器在向您的浏览器“提供”请求之前正在等待此连接发生的证据,因此无法保证事件的连续性 为了验证这个假设,我建议您在访问本地服务器之前等待一段时间。这可以使用异步函数轻松解决,或者在启动本地服务器之前链接承诺
【讨论】:
以上是关于我正在尝试使用 nodejs 从 mongodb 集合中检索数据,但我必须请求两次才能获得正确的信息的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Nodejs 和 MongoDB 中获取当前登录的用户任务