Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

161
Vistas
obteniendo una matriz vacía para filtrar/buscar texto en mongo db usando Nodejs

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")
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Espero que seas el principiante en nodeJS. Bienvenido :)

¡Hiciste muchas cosas excepto 2 cosas principales que son importantes!

  1. Ha utilizado el método POST para la acción de búsqueda. Según los estándares HTTP, debe usar GET o PATCH para acciones relacionadas con la búsqueda

Lea: http://restfulapi.net/http-methods/

  1. 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!!!

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda