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

Nou*_*med 8 firebase firebase-realtime-database google-cloud-functions

假设我触发了以下事件,ref('/users/{userId}/items/{newItem}') 我想从通配符中获取一个值userId

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

有什么建议?

elb*_*vas 6

在 firestore 中你可以使用这个。

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


Abh*_*hek 4

Token不是从trigger事件自动返回的参数。在触发通配符中,仅返回与通配符直接对应的参数。因此,如果您想使用,您需要执行以下操作

var userId = event.params.userId
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

但在这里您将收到多个令牌,然后您必须遍历子代来决定哪个userId与您相关