如何从firebase云功能中的通配符获取数据

时间:2017-12-19 14:44:57

标签: firebase firebase-realtime-database google-cloud-functions

假设我在以下ref('/users/{userId}/items/{newItem}')触发事件 我想从通配符userId

中获取值

我尝试了var token = event.params.userId.token,但它返回未定义

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以在Firestore中使用它。

exports.getUser = functions.firestore
    .document('users/{userId}').onWrite((change, context) => {
        let userId = context.params.userId;
        //...
    });

答案 1 :(得分:2)

Token不是trigger事件自动返回的参数。 在触发器通配符中,仅返回与通配符直接对应的参数。因此,如果要使用

,则需要执行以下操作
var userId = event.params.userId

然后在函数内部,您可以创建另一个Promise

return admin.database().ref(/users/userId/token).once('value').then(data => { 
//do something here
 })

这将帮助您获得令牌。或者,如果您想一步完成,可以使用userID作为外卡尝试以下操作。

return admin.database().ref(/users/{userId}/token).once('value').then(data => { 
    //do something here
     })

但是在这里您将收到多个令牌,然后您将不得不遍历孩子以决定哪个userId与您相关

答案 2 :(得分:0)

您可以找到这样的通配符值

wildCardValue = context.params.wildCardName