搜索数组MongoDB NodeJS

时间:2020-03-30 12:09:02

标签: node.js mongodb mongoose passport.js ejs

我正在努力获取名称与我存储另一个数据库的名称匹配的记录。 我可以检索所有数据字段,但是我在努力获取特定记录,即name = jack或jill。 我想使用我从护照记录中获取的变量,可以在req.user.username中访问该变量。

我尝试使用findOne并在没有任何运气的情况下操纵ejs数组。 它打印到控制台,但我无法在vieworders.ejs上显示 我想我太复杂了,在applicationDB.name = req.user.username的地方查找和显示记录的最佳方法是什么?

server.js是

app.get('/vieworders', require('connect-ensure-login').ensureLoggedIn(), function(req, res) {
          Myapplication.find(function(err, myorders) {
          res.render('vieworders', { user: req.user, myorders: myorders});
          console.log(myorders);
      });
});

vieworders.ejs是

<h1> Display Orders Here </h1>
<% if(myorders.length>0) { %>
<table border="1">
        <tr>
                <th>Index</th>
                <th>Name</th>
                <th>size</th>

        </tr>
         <% for(var i=0; i<hurleys.length;i++) { %>
                <tr>
                  <td><%= i %></td>
                  <td><%= myorders[i].name %></td>
                  <td><%= myorders[i].orderssize %></td>
                </tr>
                   <% } %>

</table>
<% } else { %>
        No Record Found
      <% } %>

MyApplication模式为

const mySchema= new Schema({
  name: {
    type: String,
    required: true,
  },
  ordersize: {
    type: String,
    required: true,
  },
});

module.exports = mongoose.model('MyApplication', mySchema);

1 个答案:

答案 0 :(得分:1)

您必须将查询过滤器作为find方法的第一个参数传递。

这应该可以解决问题,假设用户名在架构中以name的形式存储。

app.get('/vieworders', require('connect-ensure-login').ensureLoggedIn(), function(req, res) {
          Myapplication.find({name: req.user.username}, function(err, myorders) {
          res.render('vieworders', { user: req.user, myorders: myorders});
          console.log(myorders);
      });
});