搜索数组 MongoDB NodeJS
Posted
技术标签:
【中文标题】搜索数组 MongoDB NodeJS【英文标题】:Search array MongoDB NodeJS 【发布时间】:2020-07-10 19:15:50 【问题描述】:我正在努力获取名称与我存储在另一个数据库中的名称相匹配的记录。 我可以检索所有数据字段,但我正在努力获取特定记录,即名称 = 杰克或吉尔。 我想使用我从护照日志中获取的变量,我可以通过 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);
【问题讨论】:
嗨,我认为我们需要 Myapplication 架构来提供答案 谢谢,添加了架构! 所以 Nico de Ory 的答案应该是正确的 【参考方案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);
);
);
【讨论】:
成功了!正在尝试使用 FindOne,但没有成功,非常感谢!findOne
也可以,但它只会返回 一个 记录,所以如果你想检索特定用户的所有订单,find
就是你寻找。以上是关于搜索数组 MongoDB NodeJS的主要内容,如果未能解决你的问题,请参考以下文章