Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?
Grundsätzlich möchte ich, dass meine Cloud-Funktionen einen neuen übergeordneten Knoten mit dem Namen "Civil" erstellen, wenn sich in "Agent" ein neuer Knoten befindet. Hier ist der Code, den ich ausprobiert habe:
import * as functions from 'firebase-functions';
export const addCivilData = functions.database
.ref('/Agent/{AgentID}')
.onCreate((snapshot, context) => {
const userData = snapshot.val()
const newUsername = userData.username
const defCivilStatus: string = "new"
return snapshot.ref.parent?.child('Civil').child(`${newUsername}`).update(`${defCivilStatus}`)
})
Das ? after parent wird automatisch von VSCODE generiert und zeigt einige Regeln zum Bewegen des Mauszeigers an.
und wenn ich das entferne "?" es gibt rote Unterstreichung auf snapshot.ref.parent
.
Ich möchte einen übergeordneten Knoten "Civil" und einen untergeordneten Knoten mit dem abgerufenen Benutzernamen erstellen und seinen Wert auf defCivilStatus setzen. Bitte helfen Sie
BEARBEITEN: Zusätzliche Fehler-Screenshots
Sie können dies versuchen:
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.addCivilData = functions.database
.ref('/Agent/{AgentID}')
.onCreate((snapshot, context) => {
const userData = snapshot.val();
console.log('userData', userData);
const newUsername = userData.username;
console.log('newUsername', newUsername);
const defCivilStatus = "new";
return snapshot.ref.parent.parent.child('Civil').child(`${newUsername}`).set(`${defCivilStatus}`);
});
Und folgen Sie der Firebase-Funktion. Protokolle
Verwenden Sie das !
Symbol, wenn die IDE einen Fehler in der Zeile anzeigt, return snapshot.ref....
wie im folgenden Code gezeigt:
return snapshot.ref.parent!.parent!.child('Civil').child(`${newUsername}`).set(`${defCivilStatus}`);