我正在編寫Firebase雲端函數,並試圖找出Promise.all
的工作原理。在我的代碼,我傳遞一個array of database queries和我想的read the resulting array,但我只獲得了垃圾:爲什麼在使用Promise.all時無法在Promise中返回snapshot.val()?
T {
A:
P {
k: Sb { Ka: [Function: vb], ba: [Object] },
aa: P { k: [Object], aa: null, wb: [Object], Bb: '' },
wb: Zc { ld: [Object], ac: [Object] },
Bb: null },
V:
R {
u:
Gd {
app: [Object],
L: [Object],
Ua: [Object],
Sc: null,
ca: [Object],
td: 1,
Qa: [Object],
va: [Object],
qg: [Object],
jc: [Object],
ee: [Object],
md: [Object],
ia: [Object],
Xa: [Object],
cd: 2,
fe: null,
K: [Object] },
path: J { o: [Object], Y: 0 },
m:
Df {
xa: false,
ka: false,
Ib: false,
na: false,
Pb: false,
oa: 0,
kb: '',
bc: null,
xb: '',
Zb: null,
vb: '',
g: Tc {} },
Kc: false,
then: undefined,
catch: undefined },
g: Tc {} }
我期待一個簡單的JSON:
{
"name": "Foo",
"number": 2521
// And a few other fields
}
BTW,我看着Jen's video,所以我知道我在做什麼是錯的;我只想知道爲什麼我現有的代碼不起作用。 (我沒有測試過,但我相信,解決辦法是在我的數據庫查詢返回的原始快照,然後做.val()
調用)
相關的代碼,如果該鏈接消失:
function mergeTeams(duplicates) {
return Promise.all([
admin.database().ref(someRef).once('value', (snap) => {
return snap.val();
}),
admin.database().ref(someRef2).once('value', (snap) => {
return snap.val();
})
]).then(values => {
console.log(values);
const team1 = values[0];
const team2 = values[1];
console.log(team1);
console.log(team2);
}
你沒有展示你如何使用'Promise.all' - 可能是不正確的(把相關的代碼問題) –
是的,我點擊了名爲「數據庫查詢數組」的鏈接。或點擊這裏:https://github.com/SUPERCILEX/Robot-Scouter/blob/717c90264e077011ce35044b3955140e1741066c/firebase/functions/index.js#L50-L55 – SUPERCILEX
不,相關的代碼應該在這個問題 –