NodeJS不返回Elasticsearch / Mongoosastic的结果

我试图创build一个简单的search表单来search一个模型(产品)。

这里是我使用Mongoosastic的产品模型:

var ProductSchema = new Schema({ category: { type: Schema.Types.ObjectId, ref: 'Category'}, name: String, price: Number, image: String, description: String }); ProductSchema.plugin(mongoosastic, { hosts: [ 'localhost:9200' ] }); 

我将ElasticSearch与Product model连接起来,如下所示:

 Product.createMapping(function (err, mapping) { if (err) { console.log("error creating mapping"); console.log(err); } else { console.log("Mapping created"); console.log(mapping); } }); var stream = Product.synchronize(); var count = 0; stream.on('data', function () { count++; }); stream.on('close', function () { console.log("Indexed" + count + " documents"); }); stream.on('error', function (err) { console.log(err); }); 

之后,我创build了GET方法来呈现结果页面,如下所示:

 router.get('/search', function (req, res, next) { if (req.query.q){ Product.search({ query_string: { query: req.query.q } }, function (err, results) { if (err) return next(err); var data = results.hits.hits.map(function (hit) { return hit; }); res.render('main/search-result', { query: req.query.q, data: data }); console.log(data); }); } }); 

而在前端页面,我循环的结果是这样的:

  <div class="row"> <% for (var i = 0;i < data.length; i++){%> <div class="col-md-4"> <a href="/product/<%= data[i]._source._id %>"></a> <div class="thumbnail"> <img src="<%= data[i]._source.image%>" alt=""> <div class="caption"> <h3><%= data[i]._source.name %></h3> <h4><%= data[i]._source.category.name %></h4> <h5><%= data[i]._source.price %></h5> <p><%= data[i]._source.description %></p> </div> </div> </div> <% } %> </div> 

在terminal一切都好

 Server is Running on port 3000 Mapping created { acknowledged: true } Connected to the database Indexed120 documents 

为什么我的网页上没有显示结果?

  1. 检查你的Database 。 文件中是否有logging?
  2. 打印查询参数。 还打印search查询。
  3. Postman检查你的URL
Interesting Posts