Für eine AppInventor-App, die Firebase als Datenbank verwendet, möchte ich den App-Benutzern eindeutige Benutzer-IDs zuweisen. Nach der Suche nach einigen Optionen hatte ich die Idee, dass ich eine Cloud HTTP-Funktion von der App angefordert werden könnte, und die zurückkehrenden Daten wären ein UserId
generiert durch einfaches Inkrementieren der letzten UserId
in der Tabelle UserIds
(nicht sicher, ob es eins ist , entweder).Cloud-Funktionen HTTPS-Trigger zum Generieren eindeutiger Benutzer-IDs
Das ist die Geschichte, aber ich kann den folgenden Code nicht bereitstellen (und wenn ich kann, funktioniert es nicht wie ich es erwarte). Es liest die letzten UserId
korrekt, aber ich konnte nur die bisherigen Daten überschreiben.
Es wird ein unerwarteter Token-Fehler in der "."
in functions.https
ausgelöst.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var LastUserId = function f() {return admin.database().ref('UserIds').limitToLast(1)}
exports.addWelcomeMessages = functions.https.onRequest((request, response)) => {
var ref = admin.database().ref('UserIds');
// this new, empty ref only exists locally
var newChildRef = ref.push();
// we can get its id using key()
console.log('my new shiny id is '+newChildRef.key());
// now it is appended at the end of data at the server
newChildRef.set({User : LastUserId + 1});
});
schreibt dies in die Datenbank als auch ich versuche, hier zu tun: 'newChildRef.set ({Benutzer: LastUserId + 1});' – Ugur
Ja, die Transaktion wird an den gleichen Speicherort jeden Wert zurückschreiben zurückgegeben wird, so wird 'return (current || 0) + 1;' den aktuellen Wert um 1 erhöhen (beginnend bei 0, wenn 'lastUserId' nicht existiert) und ihn dann automatisch in der Datenbank speichern. – Grimthorr
Datenbank ist ok, aber ich bekomme Fehler in den Protokollen und es gibt die geschriebenen Daten nicht zurück: 'TypeError: Kann die Eigenschaft 'val' von undefined nicht lesen at admin.database.ref.transaction.then (/ user_code/index .js: 15: 38) bei process._tickDomainCallback (internal/process/next_tick.js: 135: 7) ' irgendwelche Ideen? – Ugur