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

132
Vistas
Filtrado de objetos por una búsqueda

Estoy tratando de filtrar una lista de productos por un parámetro de búsqueda que buscará productos que tengan el nombre de propiedad y el name de seller.store.name similar (LIKE en php) al parámetro de búsqueda.

 viewAll: async (req, res) => { const search = req.query.search || ''; const user = User.find({ store.name: { $regex: search, $options: 'i' } }); const filter = search ? { name: { $regex: search, $options: 'i' }, seller: { user } } : {}; const products = await Product.find({ ...filter }) .populate('store', 'store.name store.img'); res.send({ products }); },

Me estoy encontrando con dos problemas.

  1. No puedo comparar la propiedad store.name usando el método db.collection.find . Recibo el error ',' expected.ts(1005) . He intentado usar tanto store.name como store['name'] .
  2. Me gustaría que el filtro fuera similar a la palabra clave LIKE en PHP y no una coincidencia exacta. No estoy seguro de qué función u opciones debería usar.

Estos son mis modelos:

producto.js

 const mongoose = require('mongoose'); const productSchema = mongoose.Schema({ name: { type: String, required: true }, description: { type: String, required: true }, seller: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, image: { type: String, required: true }, price: { unitPrice: Number, unit: String, required: true }, stock: { amtAvail: Number, amtSold: { type: Number, default: 0, }, required: true }, active: { type: Boolean, required: true, default: true } }, { timestamps: true }); const Product = mongoose.model('Product', productSchema); module.exports = Product;

usuario.js

 const mongoose = require('mongoose'); const userSchema = new mongoose.Schema({ name: { type: String, required: true, unique: true }, email: { type: String, required: true, unique: true }, password: { type: String, required: true }, isSeller: { type: Boolean, default: false, required: true }, store: { type: Object, name: { type: String, required: true, unique: true }, description: { type: String, required: true }, img: { profile: String, header: [String] }, contact: { line: String, phone: Number, accountNumber: Number } }, address: String, }, { timestamps: true }); const User = mongoose.model('User', userSchema); module.exports = User;

¡Cualquier ayuda e ideas serían muy apreciadas!

about 4 years ago · Juan Pablo Isaza
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