[英]Cloud Function in Firebase Realtime Database
I aim to have a databse trigger such that when there is a change in the "Players"
databse node, there will be a corresponding set ()
function at a different firebase node called users
. 我的目标是要有一个databse触发器,以便当
"Players"
数据库的节点发生更改时,在名为users
的另一个Firebase节点上将有一个对应的set ()
函数。
Below is the cloud function I have been working on: 以下是我一直在从事的云功能:
const functions = require('firebase-functions');
// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.update = functions.database.ref('/Player')
.onWrite(event=>{
console.log(event.data);
var ref = admin.database().ref(`/users/{user.uid}/week1`);
ref.set(10);
return;
});
The issue is that the cloud function returns the error: 问题是云函数返回错误:
Error: Firebase.child failed: First argument was an invalid path: "/users/{user.uid}/week1".
错误:Firebase.child失败:第一个参数是无效路径:“ / users / {user.uid} / week1”。 Paths must be non-empty strings...
路径必须是非空字符串...
There are multiple users as follows so is there a way I can access what the user uid will be for each user and refer to this within me cloud function?: 有多个用户,如下所示,有没有办法我可以访问每个用户的用户uid并在我的云函数中引用它?:
users: {
user uid (generated by push) : {
deviceToken : "tokenID",
name : "Display Name"
},
anotherUserID : {
deviceToken : "tokenID",
name : "Display Name"
}
The Players node is as follows : Players节点如下:
{
"players" : [
{"name" : "Yasin 'YB' Amusan",
"Team" : "Industry",
"price": 8000000,
"position": "forward",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Hassan 'Hasi' Akinyera",
"Team" : "Industry",
"price": 5000000,
"position": "defender",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Femi 'Fabio' Awoniyi",
"Team" : "Industry",
"price": 9000000,
"position": "defender",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Deji 'Dej' Awoniyi",
"Team" : "Industry",
"price": 7000000,
"position": "forward",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Koye 'K10' Kekere-Ekun",
"Team" : "Industry",
"price": 9000000,
"position":"midfielder",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Teni 'Teezee' Zacchaeus",
"Team" : "Industry",
"price": 6000000,
"position":"hybrid",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Bolaji 'Boj' Odojukan",
"Team" : "Industry",
"price": 7000000,
"position":"forward",
"image":"http://res.cloudinary.com/deji/image/upload/v1489787662/blank_photo_mqvivv.png",
"goals": 0,
"assists" : 0,
"Y" : 0,
"R" : 0},
{"name" : "Ernest",
"Team" : "Industry",
"price": 6000000,
"position":"defender"
}
There are a couple issues with your function, I will not rewrite the function for you, but will point out some things. 您的函数有几个问题,我不会为您重写函数,但会指出一些事情。
First, I suggest taking a look at these docs: https://firebase.google.com/docs/functions/get-started 首先,建议您查看以下文档: https : //firebase.google.com/docs/functions/get-started
ref
is not correct either. ref
也不正确。 Are you trying to insert the user id from a variable that is not in your code? Edit: I suggest adding the user uid to the players ? 编辑:我建议将用户uid添加到播放器中? Then on function execution you can access the user uid by doing something similar to this:
然后在执行函数时,您可以通过执行以下操作来访问用户uid:
var player = event.data.val();
var uid = player['useruid'];
It is a little hard to tell what you are after. 很难说出你要做什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.