2017-12-19 3 views
0

Unter der Annahme, dass ich Veranstaltungen auf die folgenden ref('/users/{userId}/items/{newItem}') auslösen mag ich die Wildcard einen Wert erhalten von innen userIdWie man Daten von Wildcard in Feuerbasis Cloud-Funktionen erhalten

ich versucht habe var token = event.params.userId.token aber es zurück zum undefiniert

Irgendwelche Vorschläge?

+1

In Ihrem Code-Snippet nur 'event.params.userId' wird definiert. Es gibt keine magische Suche des Benutzers mit dieser ID passiert. Wenn Sie das Benutzerobjekt des Benutzers abrufen möchten, der die Funktion ausgelöst hat, lesen Sie https://stackoverflow.com/questions/42750060/getting-the-user-id-from-a-database-trigger-in-cloud-functions -for-firebase –

+0

Vielen Dank, ich habe dieses Code-Snippet ausprobiert und es funktionierte ganz gut: 'return admin .database() .ref ('/users/$ {userId}/token') .once ('Wert') . Dann (Daten => { return admin.messaging(). sendToDevice (data.val(), Nutzlast); }); 'wo ich einen einzelnen Wert für die Wildcard userId ausgelöst bekam, um seine zu erhalten Token –

+0

Dieses Snippet sucht das Token in der Datenbank basierend auf der 'userId'. Aber Sie können nicht einfach das Token lesen, indem Sie 'event.params.userId.token' ausführen. Diese' token' -Eigenschaft ist für einen Parameter aus dem Pfad, der die Funktion ausgelöst hat, einfach nicht verfügbar. –

Antwort

0

Token ist kein Parameter, der automatisch von trigger Ereignissen zurückgegeben wird. In Trigger-Wildcards werden nur Parameter zurückgegeben, die direkt dem Platzhalter entsprechen. So müssen Sie Folgendes tun, wenn Sie die

var userId = event.params.userId 

verwenden möchten, und dann innerhalb der Funktion können Sie eine weitere Promise

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

Diese Sie das Token wird dazu beitragen, machen. Oder wenn Sie es in einem Schritt tun möchten, können Sie Folgendes mit Benutzer-ID als Platzhalter versuchen.

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

Aber hier werden Sie mehrere Token erhalten und dann werden Sie haben, um durch die Kinder zu durchlaufen, um zu entscheiden, welche userId von Bedeutung für Sie ist

Verwandte Themen