我正在使用连接到MongoDB数据库的Node.js服务器构建网站。
对于其中一个页面,我打算从Mongo数据库中获取一个数组,并使用它在网页上动态生成显示。
我已在网站的另一部分使用数组构建动态显示,但这是使用我在JavaScript文件中生成的数组。
我正在努力解决的问题是如何从Mongo数据库中检索数组,然后在JavaScript文件中使用它。
.ejs Page
<div class="col-sm-12 text-center cocktail-text">
<h2>My Cocktails: <%= user.login.username %></h2>
</div>
<div class="myCocktails">
<div>
<div class="row text-center">
<!-- Dynamically generated elements will go here -->
<!-- Example of element once generated:
<div class="col-sm myCocktailBackground">
<img src="img/Mojito.jpg" alt="..." class="img-thumbnail">
<h3>Mojito</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</div> -->
</div>
</div>
</div>
我已成功从Mongo数据库中提取数据并将其显示在.ejs页面上,我只是不知道如何在JavaScript文件中访问它。如果这是最好的方法,我也一直在使用AJAX。
答案 0 :(得分:0)
我的解决方案:
我最终使用ajax GET
到我的节点服务器,在我的服务器上,我在mongo数据库中搜索了正确的用户,并在数据库上返回了与该用户名相关的数据。然后我解析了我的javascript文件中的数据,以获得我想要的数组。
JavaScript文件:
$.ajax({
type: 'GET',
url: '/saveddrinks',
dataType: "json",
cache: false,
contentType: "application/json",
success: function(data) {
if (data) {
//Printing data to console
console.log(data);
//Printing array to console;
console.log(data.drinks);
var drinksarray = data.drinks;
//***WORK WITH ARRAY HERE***
}
else {
console.log("no data");
}
}
});
Server.js
app.get('/saveddrinks', function(req, res) {
//If user is not currently logged in, redirect them to login page.
if(!req.session.loggedin){res.redirect('/login');return;}
//get the requested user based on their username?
//set username of logged in user
var uname = sess.username;
//this query finds the first document in the array with that username.
//Because the username value sits in the login section of the user data we
//use login.username
db.collection('users').findOne({
"login.username": uname
}, function(err, result) {
if (err) {res.send(err)}
console.log(uname + ":" + result);
//finally we just send the result to the user page as "user"
res.send(result);
});
});