我知道类似的问题已经被问过1000次了,但对于我来说,我一直在努力解决一些我觉得很简单的问题.

我们有两个表,一个叫做order_lines,另一个叫做order_lines_meta,我需要首先查询order_lines,然后为每一行获取order_lines_meta并返回它

我已经try 了很多变化,这就是我所处的位置,我需要它等待order_lines_meta返回,因为否则当数据在nodejs已经输出order_lines后返回时,我会得到空白元数据

最后是一个对象,其中包含订单信息、对象的行项目和行项目内的元数据对象

非常感谢你的帮助,我似乎无法在这件事上下定决心,我当然也愿意用其他方式来做这件事

使用 node 、express、typescript和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});
    });

推荐答案

push语句从上一个.then移到上一个.then中:

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});
}));

在最后.then页中,你会找到完整的pickListObj页.

然而,我想知道,将数据库上的两个数据库集合连接起来,并用一个db.collection操作检索所有内容是否会更简单、更快.

Node.js相关问答推荐

无法使用NPM安装REDUX和DATEPPICER

我收到警告:发现函数rs-ms-v1不受支持的运行时nodejs18.x× 不受支持的运行时

我的 React + Express 应用程序不断向我的数组添加一个空对象

构建期间 Docker 容器中的 npm 安装失败

将 null 推入管道后,node.js 可写完成未发出

Amplify 部署的应用程序出现TypeError: handler is not a function错误,但它在本地运行

Gulp 能否向 Docker 发出增量构建的第一次迭代完成的信号?

无法使用 node 预签名 url 从 React 将图像文件上传到 s3

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

Mongoose-更新嵌套数组

Sharp JS 依赖关系 destruct 了 Elastic Beanstalk 上的 Express Server

类型中缺少属性,该类型是由类实现的接口

如何在 mongoDB 中用值 0 填充缺失的文档?

如何在 Nest.js 中使用查询参数?

ChildProcess 关闭、退出事件之间的区别

Node.JS 中的基本 HTTP 身份验证?

如何在 node 中找到引用站点 URL?

如何在 MongoDB 中查询引用的对象?

Node.js -Firebase 服务帐户私钥不会解析

路由后的 Node Express 4 中间件