Estoy probando la funcionalidad de búsqueda en la base de datos mongo usando el nodo js. mi matriz de resultados siempre está vacía. Compartí mi código aquí. Alguien que me ayude a encontrar lo que está mal. después de buscar, obtengo una matriz vacía [] en mi consola.
modelos/contacto.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'); });Controlador/contacto.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;en archivo de jade
form(id="search-filter" method ="POST" action="/search") input#search-bx(type='text', name='searchbx' placeholder="search here") input(type="submit", value="Search")Espero que seas el principiante en nodeJS. Bienvenido :)
¡Hiciste muchas cosas excepto 2 cosas principales que son importantes!
Lea: http://restfulapi.net/http-methods/
Ha intentado con la búsqueda de texto. $ consultas de texto para trabajar, mongodb necesita indexar el campo con un índice de texto. Quieres hacer algunos cambios en tu mangosta
{campos: {tipo: [String], texto: verdadero}
REF: https://docs.mongodb.com/v3.2/core/index-text/
Aquí está el código simple y limpio: puede hacer modificaciones basadas en la muestra
var mongoose = require('mongoose'); module.exports = mongoose.model('Todo', { name : {type : String, unique: true, text: true}, location: {type: String} }); Controller: app.get('/api/todo/search/:searchKey', function (req, res) { var searchKey = req.params.searchKey; if (!searchKey) { return res.send({ reason: 'searchKey required' }); } Todo.find({ $text: { $search: searchKey }}, function(err, result) { if (err) { res.status(500); return res.send({ reason: err.toString() }); } else if (result && result.reason) { return res.status(400).send(result); } return res.status(200).send(result); }); });¡¡¡Mis mejores deseos!!!