我知道類似的問題已經被問了 1000 次,但對于我的一生來說,我一直在為一些我覺得很簡單的事情而苦苦掙扎。
我們有 2 個表,一個稱為 order_lines,另一個稱為 order_lines_meta,我需要先查詢 order_lines,然后為每一行獲取 order_lines_meta 并回傳它
我嘗試了很多變體,這就是我所處的位置并卡住了,我需要它等待 order_lines_meta 回來,否則我會得到空白的元資料,因為資料是在 nodejs 已經輸出 order_lines 之后出現的
最后是一個包含訂單資訊的物件,物件的行專案和行專案內的元資料物件
感謝您的幫助,我似乎無法全神貫注,而且我當然也愿意接受其他方法
使用 nodejs、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});
});
uj5u.com熱心網友回復:
將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操作檢索所有內容是否會更簡單和更快。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466383.html
