SurrealDB: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) |
||
Zeile 47: | Zeile 47: | ||
Das ONLY-Schlüsselwort funktioniert nur bei Angabe einer spezifischen Record-ID, nicht | Das ONLY-Schlüsselwort funktioniert nur bei Angabe einer spezifischen Record-ID, nicht | ||
− | aber automatisch bei einer Menge, die nur ein Element enthält. Dann kommt der Fehler | + | aber automatisch bei einer Menge, die nur ein Element enthält.<ref>Vgl. https://surrealdb.com/docs/surrealdb/surrealql/statements/select#the-only-clause .</ref> Dann kommt der Fehler |
Expected a single result output when using the ONLY keyword | Expected a single result output when using the ONLY keyword | ||
Version vom 20. März 2024, 13:02 Uhr
SurrealDB ist v.a. eine Datenbank, kann aber auch als komplettes Backend für Webanwendungen fungieren.
Tools
- Die PgAdmin-Entsprechung für SurrealDB nennt sich surrealist.app
Libraries
Betrieb hinter Proxy-Server
- Wie betreibt man SurrealDB hinter einem NGinx-Proxy?
- Die offizielle Dokumentation enthält auch eine Anleitung zum Betreiben von SurrealDB in einem Container auf fly.io.
Skalierung
- für ein Cluster greift es wohl auf TiDB zurück
Benutzung der HTTP/REST-API
Die HTTP-API von SurrealDB ist dokumentiert.
Scope-User
Ein Scope wird mit DEFINE SCOPE angelegt.
Beim POST-Request des SIGNUP-Endpunkts wird ein JSON-Objekt mit folgenden Feldern übergeben:
- NS - der Namespace
- DB - die Datenbank
- SC - der Scope-Name (wie hinter DEFINE SCOPE geschrieben)
Die Namen der Felder können auch klein geschrieben werden oder ausgeschrieben:
- namespace
- database
- scope
In Version 1.2.1 dürfen die per POST übermittelten Daten NICHT mit einem Leerzeichen beginnen.
Beispiel eines SIGNUP:
curl \ -H "Accept: application/json" \ --data-binary $'{"ns":"myns", "db":"mydb", "sc": "another_scope"}\n' \ $surreal_url/signup
SELECT - Besonderheiten
ONLY Schlüsselwort
Das ONLY-Schlüsselwort funktioniert nur bei Angabe einer spezifischen Record-ID, nicht aber automatisch bei einer Menge, die nur ein Element enthält.[1] Dann kommt der Fehler
Expected a single result output when using the ONLY keyword
Eine solche Menge ist aber akzeptabel, wenn sie
- durch
LIMIT 1
ausdrücklich auf eins begrenzt wird oder - indem man mit
[0]
das erste Element der Menge auswählt (dann braucht man aber das SELECT ... FROM ONLY auch nicht mehr).
Beispiel:
Folgendes funktioniert:
create food:orange; select * from only food:orange;
Das bringt oben genannten Fehler:
select * from only food where id=="food:orange";
Dagegen hilft LIMIT 1:
select * from only food where id=="food:orange" limit 1;
Oder einfach:
(select * from food)[0];
Alternativen:
RETURN (select * from food)[0];
oder
SELECT * FROM ONLY (select * from food)[0];