Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?


Dharmaraj:

Diagramm der Datenbank

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.

Regeln angezeigt

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

Protokolle

verwendet .set hier

cmd Fehler

Kasım Özdemir:

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}`);

Verwandte Artikel