0
firebase 데이터베이스 트리거에서 와일드 카드가 작동하는 방법을 알고 있습니다. 그러나 Firebase 트리거를 사용하면 약간의 어려움이 있습니다.Firebase 데이터베이스에서 각 사용자의 uid에 액세스하는 방법 HTTP 트리거
내 목표는 데이터베이스에 각 사용자에 대해 /users
노드를 쓰는 클라우드 기능을 사용하는 것입니다.
`userID` not defined.
내 사용자 노드의 JSON이다 : 나는 예 here을 부여하지만 오류 코드를 반환 다음
exports.sync = functions.https.onRequest((req, res) => {
admin.database().ref('users/'+ userId + '/week1').set(10);
res.send('it worked');
});
인가 : 다음
users:{
"1YrpX2W2xnMPoy4YGpZcOE0xJ5g2" : {
"email" : "[email protected]",
"fullname" : "Muyiz",
"selection" : [ 1, 2, 3, 4, 5, 6 ],
"teamname" : "Donawon",
"total" : 12,
"userName" : "[email protected]",
"week1" : 0,
"week10" : 0,
"week11" : 0,
"week12" : 0,
"week2" : 0,
"week3" : 0,
"week4" : 0,
"week5" : 0,
"week6" : 12,
"week7" : 0,
"week8" : 0,
"week9" : 0
},
"6K9rQiZQ3jaV38WWtDbNwxhqIwc2" : {
"email" : "[email protected]",
"fullname" : "Dami Etomi",
"selection" : 0,
"teamname" : "Bayern Neverlosin'",
"total" : 0,
"userName" : "[email protected]",
"week1" : 0,
"week10" : 0,
"week11" : 0,
"week12" : 0,
"week2" : 0,
"week3" : 0,
"week4" : 0,
"week5" : 0,
"week6" : 0,
"week7" : 0,
"week8" : 0,
"week9" : 0
}
}
내 클라우드 기능입니다 그 기능은 각 사용자의
week1
노드에서
set
노드가 될 수있는 방법이 있습니까? 나는 이것이 사용자 노드를 통해 루핑하는 것을 포함하지만 와일드 카드로
{userID}
을 입력하지 않고 데이터베이스 참조를 만드는 방법을 알 수 없다는 것을 이해합니다.
각 사용자의 selection
어레이에 액세스하는 데 역 인용 부호를 사용할 수 있습니까? 난 그냥 어쩌면 각 사용자에 대한 각 선택의 배열을 얻을 수있는 사용자를 반복 wouldnt가 userSnapshot.val().selection
를 작성 맡기
`${userSnapshot.val()}`.selection; would do the trick?
마지막 코드는 다음과 같이 보일 것이다 :
exports.sync = functions.https.onRequest((req, res) => {
admin.database().ref('users').once('value').then(function(snapshot) {
var updates = {};
snapshot.forEach(function(userSnapshot) {
var selection = `${userSnapshot.val()}`.selection;
updates[`/users/${userSnapshot.key}/week1`] = 10;
});
admin.database().ref().update(updates).then(function() {
res.send('it worked');
});
});
});
감사합니다. ! 그것은 효과가 있었다. 나는''역 인용 부호 (backquotes)의 사용에 주목한다. 그것은 각 사용자마다 다른 노드에 사용되는 것입니다. 예를 들어, 각 사용자의 "선택"노드에 액세스하는 데 사용할 수 있습니까? 내 질문을 반영하도록 질문을 편집합니다. –
역 인용 부호는 ES6 트릭입니다 : 템플릿 리터럴. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals를 참조하십시오. –