我正在NodeJS&MongoDB中从事一个购物车项目,我正在尝试在我的购物页面中创建一个搜索栏。
索引.hbs
<form action="/" method="get" id="query-form">
<input class="col-sm-6 col-md-4 col-md-offset-4 col-sm-offset-3"
type="text" id="query" name="query">
<button type="submit" class="btn btn-success">Search</button>
</form>
</div>
{{# each products }}
<div class="row">
{{# each this }}
<div class="col-sm-6 col-md-4">
<div class="thumbnail">
<img src="{{ this.imagePath }}" alt="..." class="img-
responsive">
<div class="caption">
<h3>{{ this.title }}</h3>
<p class="description">{{ this.description }}</p>
<div class="clearfix">
<div class="price pull-left">${{ this.price }}
</div>
<a href="/add-to-cart/{{this._id}}" class="btn
btn-success pull-right" role="button">Add to Shopping Cart</a>
</div>
</div>
</div>
</div>
{{/each}}
</div>
{{/each}}
索引.js
var successMsg = req.flash('success')[0];
if(req.query.query) {
let query = "/" + req.query.query + "/";
Product.find({title: {$regex: query,'$options': 'i'}},function (err,
docs) {
let productChunks = [];
let chunkSize = 3;
for (var i = 0; i < docs.length; i += chunkSize) {
productChunks.push(docs.slice(i, i + chunkSize));
}
res.render('shop/index', {title: 'Shopping Cart', products:
productChunks, successMsg: successMsg, noMessages: !successMsg});
})
}
else
{
Product.find(function (err, docs) {
var productChunks = [];
var chunkSize = 3;
for (var i = 0; i < docs.length; i += chunkSize) {
productChunks.push(docs.slice(i, i + chunkSize));
}
res.render('shop/index', {title: 'Shopping Cart', products: productChunks, successMsg: successMsg, noMessages: !successMsg});
});
}});
在去毛刺时,路由似乎被请求了两次,而且在最后一次它没有要使用的“req”对象,因此没有搜索。
有什么想法吗?