我知道类似的问题已经被问过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});
});