Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

157
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!