检索和使用MongoDB数组

时间:2018-04-22 20:03:15

标签: javascript node.js ajax mongodb

我正在使用连接到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。

1 个答案:

答案 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);
 });
});