Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda