2017-05-04 39 views
3

是否存在直接引用數據庫觸發器上方節點的數據值的乾淨內置方法?我明白我可以得到一個家長裁判,然後我可以查詢價值,但如果有一個更簡潔的方式,這將是非常感謝。Firebase的雲端函數 - 從數據庫觸發器獲取父數據

爲了清楚起見,我想用對象中的子節點作爲觸發器,當它發生時直接獲取父對象的值,以避免在對父對象進行其他更改時調用該函數所以:

const parentObject = { 
triggerValue: 'I want the function to be triggered only on writes to this path', 
parentValue: 'But I also want this value', 
} 

感謝

回答

2

您可以使用event.data.refevent.data.adminRef導航數據庫。它們是Reference對象,它們的工作方式與您在客戶端上使用Firebase構建Web應用程序時的工作方式完全相同。所以,如果使用parent屬性向上導航一個級別可以正常工作,那麼就使用它。沒有額外的特殊語法。

+0

OK感謝。我只是很好奇,事件對象中的數據是否已經存在,其方式與event.data.val()相同,並且不需要異步讀取,但這很好,它不適合於是。謝謝 –

+1

我明白了,是的,事件只包含匹配路徑上的數據而沒有其他數據。這可能是不必要的成本。 –

+0

是有道理的。謝謝 –

5

我已經像這樣回答了6次,並不斷重新實施解決方案。

下面是如何獲取父數據,post,從兒童屬性,post.body,這是變了:

exports.doStuff = functions.database 
    .ref("/posts/{postId}/body") 
    .onWrite(event => { 
    return event.data.ref.parent.once("value").then(snap => { 
     const post = snap.val(); 
     // do stuff with post here 
    }); 
    }); 
+0

同樣在這裏。你從這篇文章是正確的。謝謝。 https://stackoverflow.com/questions/43988494/cloud-functions-for-firebase-how-to-get-event-data-ref-parent-childxxx-val – vzhen

相關問題