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

162
Vistas
Firestore promete esperar los detalles del producto antes de devolver los productos

Sé que se han hecho preguntas similares a esta 1000 veces, pero por mi vida estoy luchando con algo que siento que es bastante simple.

Tenemos 2 tablas, una llamada order_lines y la otra order_lines_meta, primero necesito consultar order_lines y para cada línea obtener order_lines_meta y devolver eso

He probado muchas variaciones, aquí es donde estoy y estoy atascado, necesito que espere a que order_lines_meta regrese porque, de lo contrario, obtendré metadatos en blanco ya que los datos vienen después de que nodejs ya haya generado order_lines

Al final, un objeto que contiene información de pedidos, elementos de línea de objetos y, dentro de los elementos de línea, un objeto de metadatos.

Agradezco la ayuda, parece que no puedo envolver mi cerebro en esto, y ciertamente estoy abierto a otras formas de hacer esto también

Usando nodejs, express, mecanografiado, firestore

 const orderNumber = req.query.orderNumber as string; const customerName = req.query.customerName as string; const orderDate = req.query.orderDate as string; const pickListObj = { orderNumber: orderNumber, customerName: customerName, orderDate: orderDate, line_items: <any>[], }; db.collection('order_lines').where('number', '==', orderNumber).get().then((snap) => { const promises = <any>[]; snap.forEach(async (order: any) => { // get meta data const metaDataObj = <any>[]; const productName = order.data().name; const productQty = order.data().quantity; promises.push(db.collection('worder_line_meta').where('lineId', '==', order.data().lineId).get().then((doc: any) => { if (doc.display_value != '') { const meta = [{display_key: doc.data().display_key, display_value: doc.data().display_value}]; metaDataObj.push(meta); } })); }); return Promise.all(promises); }).then(() => { pickListObj.line_items.push({name: productName, quantity: productQty, meta_data: metaDataObj}); });
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Mueva la instrucción push del último .then dentro del .then anterior:

 promises.push(db.collection('worder_line_meta')...then((doc: any) => { if (doc.display_value != '') { ... } pickListObj.line_items.push({name: productName, quantity: productQty, meta_data: metaDataObj}); }));

En el último .then , encontrará el pickListObj completo.

Sin embargo, me pregunto si podría ser más simple y rápido unir las dos colecciones de bases de datos directamente en la base de datos y recuperar todo con una operación db.collection .

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