Thursday, 27 April 2017

getting an empty array for filter/search text in mongo db using Nodejs

I am trying out search functionality in mongo database using node js.my result array always empty. I shared my code here. Someone help me to find whats wrong. after searching I am getting an empty array [] in my console.

models/contact.js

var mongoose = require('mongoose');
var ContactSchema = new mongoose.Schema({
cid: String,
name: {type: String, index: true},
phon: Number,
contactwith:  {type: String, index: true}
 });
 module.exports = mongoose.model('Contact', ContactSchema);


   mongoose.model('Contact', ContactSchema).ensureIndexes(function(err) {
      if (err)
          console.log(err);
       else
          console.log('create contact index successfully');
     });

Controller/contact.js

 var mongoose = require('mongoose');
 var Contact = mongoose.model('Contact');

  var ContactController = function(app,mongoose){   
    app.post('/search',function(req,res){
    var query = req.body.searchbx;
    console.log(query);
    var dbsearch = Contact.find({$text: {$search: query}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}});
    console.log(dbsearch);

    Contact.find({$text: {$search: query }}, function (err, results){
        if(err){
            console.log(err);
        }
        if(results){
            console.log('in results')
            console.log(results)
            res.render("search",{results: results});
        }
    })

  });
 }
module.exports = ContactController;

in jade file

form(id="search-filter" method ="POST" action="/search")
input#search-bx(type='text', name='searchbx' placeholder="search here")
input(type="submit", value="Search")



via Sami

No comments:

Post a Comment