2017-01-23 4 views
1

Ich arbeite an einem Chat-Projekt auf der Plattform Raspberry PI 3, Openelec OS.So verhindern Sie anonyme Schlüssel auf Firebase?

Versuchen, in die DB zu schreiben und unerwünschte anonyme Schlüssel zu bekommen.

Firebase real-time DB

Unerwünschte Schlüssel mit gelb markiert. Movie2 und es sind Schlüssel und Werte das gewünschte Ergebnis, aber ich habe es manuell gemacht.

Ich frage nur, wie kann ich verhindern, dass dieser anonyme Zufallsschlüssel da ist und wie kann ich ihn durch einen anderen Schlüssel ersetzen? (String, ein Filmname zum Beispiel)

Dies ist mein Code:

url = 'https://chat-example-97c62.firebaseio.com/Movie1.json' 
postdata = { 
    'date': str(time.asctime(time.localtime(time.time()))), 
    'temp': str("Hello from Kodi") 
} 
req = urllib2.Request(url) 
req.add_header('Content-Type','application/json') 
data = json.dumps(postdata) 

Dank.

+0

Um sicherzustellen, dass die Daten dem gewünschten Schema entsprechen, können Sie '.validate'-Klauseln in die Sicherheitsregeln Ihrer Datenbank schreiben. Weitere Informationen hierzu finden Sie unter: https://firebase.google.com/docs/database/security/ –

+0

@FrankvanPuffelen OK, dies bestätigt. Aber wie schreibe ich in die Datenbank ohne den anonymen Schlüssel an erster Stelle? Zum Beispiel für den Schlüssel Movie1 im Bild möchte ich nur die Schlüssel Datum, Benutzername und ihre Werte haben. Ohne das KbBDD4QDDiZn3it6r8m –

Antwort

0

Wenn Sie eine POST-Anforderung an Firebase senden, wird es automatisch einen Key (Anonymous Key) generiert, wenn Sie Sie Ihren eigenen Schlüssel verwenden möchten, müssen eine Patch-Anforderung verwenden, dies ist ein Beispiel auf Python 3:

def update_entry(user, message): 

    my_data = dict() 
    my_data["user"] = user 
    my_data["message"] = message 

    json_data = json.dumps(my_data).encode() 
    request = urllib.requests.Request("https://<YOUR-PROJECT-ID>.firebaseio.com/movies/<REPLACE_THIS_WITH_YOUR_DESIRED_KEY>.json", data=json_data, method="PATCH") 

    try: 
     loader = urllib.request.urlopen(request) 
    except urllib.error.URLError as e: 
     message = json.loads(e.read()) 
     print(message["error"]) 
    else: 
     print(loader.read()) 
Verwandte Themen