SurrealDB: Unterschied zwischen den Versionen

Aus CodicaTipps
Zur Navigation springen Zur Suche springen
Zeile 41: Zeile 41:
 
     --data-binary $'{"ns":"myns", "db":"mydb", "sc": "another_scope"}\n' \
 
     --data-binary $'{"ns":"myns", "db":"mydb", "sc": "another_scope"}\n' \
 
   $surreal_url/signup
 
   $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. Dann kommt der Fehler
 +
  Expected a single result output when using the ONLY keyword
 +
 +
Eine solche Menge ist aber akzeptabel, wenn sie
 +
* durch <code>LIMIT 1</code> ausdrücklich auf eins begrenzt wird oder
 +
* indem man mit <code>[0]</code> 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];
 +
  
 
---------
 
---------

Version vom 20. März 2024, 13:01 Uhr

SurrealDB ist v.a. eine Datenbank, kann aber auch als komplettes Backend für Webanwendungen fungieren.

Tools

Libraries

Betrieb hinter Proxy-Server

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. 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];