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

154
Vistas
Obtenga todos los elementos coincidentes utilizando la base de datos de formularios de matriz de ids

No puedo recibir una lista de elementos que coincidan con mi matriz de ID.

Esto es PARTE del código en el componente Angular:

 this.orderService.getSpecyficOrders(ids) .subscribe(orders => { ...

Donde ids es una matriz de

 [{_id : ID },{_id : ID },{_id : ID },]

ID es "5235sd23424asd234223sf44" tipo de cadena de documentos MongoDB.

En el archivo de servicio angular que he importado: Http, Encabezados e import 'rxjs/add/operator/map';

Aquí está el código en servicio en Angular:

 getSpecyficOrders(ids){ return this.http.get('/api/ordersspecyfic', ids) .map(res => res.json()); }

En el archivo expreso, necesito: multer, express,router,mongojs, db

Y aquí hay parte del código en express, llame a mongodb:

 router.get('/ordersspecyfic', function(req, res, next){ var ids = req.body; ids = ids.map(function (obj){ return mongojs.ObjectId(obj._id)}); db.orders.find({_id: {$in: ids}}, function(err, orders){ if(err){ res.send(err); } res.json(orders); }); });

Y estoy recibiendo error:

Respuesta no detectada {_body: "TypeError: ids.map no es una función
&n.../node_modules/express/lib/router/index.js:46:12)↵", estado: 500, ok: falso, texto de estado: "Error interno del servidor", encabezados: encabezados...}

Console.log en el archivo express me muestra que req.body es un objeto vacío {}

Por lo que sé, req.body no es una matriz, pero no sé si esto es solo un problema con ese código.

Todas las demás solicitudes de obtener un solo elemento, obtener todos los elementos, etc. funcionan bien. Simplemente no puedo hacer que este funcione ...

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Supongo que está tratando de enviar ids a su lado del servidor con

 return this.http.get('/api/ordersspecyfic', ids)

pero http.get api no funciona así

get (url: cadena, opciones?: RequestOptionsArgs): Observable

Para enviar estos datos a su back-end, debe usar la API de publicación

 let headers = new Headers({ 'Content-Type': 'application/json' }); let options = new RequestOptions({ headers: headers }); return this.http.post('/api/ordersspecyfic', ids, options)

publicación (url: cadena, cuerpo: cualquiera, opciones?: RequestOptionsArgs): Observable

Fuente: https://angular.io/docs/ts/latest/api/http/index/Http-class.html

over 4 years ago · Santiago Trujillo Denunciar

0

Dos errores, backend y frontend.

  1. Error de interfaz

Dices this.http.get('/api/ordersspecific', ids); . Esto no hace nada, o específicamente, solo intenta obtener /api/ordersspecific . No envía identificadores, su segundo parámetro no coincide con ninguna RequestOptions . En otras palabras, sus identificaciones son ignoradas.

Querrá agregar esto como una cadena de consulta. Consulte aquí cómo agregar parámetros de cadena de consulta. Pero en resumen, sería algo simple como:

 return this.http.get('/api/ordersspecyfic?ids=<id1>&ids=<id2>...'
  1. Error de fondo

Estás leyendo cosas del cuerpo. Es una solicitud GET, no debe haber ningún cuerpo. Lea esto de la cadena de consulta:

 router.get('/ordersspecyfic', function(req, res, next){ var ids = req.query.ids; });
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