Cette section présente les méthodes uql()
et uqlStream()
sur un objet Connection
pour interroger la base de données à l'aide de UQL.
Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l'exemple complet.
UQL (Ultipa Query Language) est le langage conçu pour interagir pleinement avec les bases de données graph Ultipa. Pour des informations détaillées sur UQL, consultez la documentation.
uql()
Exécute une requête UQL sur le graphset ou la base de données courante et renvoie le résultat.
Paramètres :
string
: La requête UQL à exécuter.RequestConfig
(Optionnel) : Paramètres de configuration de la requête.
Retourne :
Response
: Résultat de la requête.
// Récupère 5 node @movie dans le graphset 'miniCircle' et imprime leurs noms
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "miniCircle",
useMaster: true,
};
let resp = await conn.uql(
"find().nodes({@movie}) as n return n{*} limit 5",
requestConfig
);
let node_list = resp.data?.get(0).asNodes();
node_list?.forEach((node) => {
console.log(node.get("name"));
});
The Shawshank Redemption
Farewell My Concubine
Léon: The Professional
Titanic
Life is Beautiful
Pour plus d'exemples, veuillez vous référer à Mapping des Types entre Ultipa et Node.js.
uqlStream()
Exécute une requête UQL sur le graphset ou la base de données courante et renvoie le résultat de manière incrémentale, permettant la gestion de grands ensembles de données sans tout charger en mémoire d'un coup.
Paramètres :
string
: La requête UQL à exécuter.UqlResponseStream
: Écouteur pour le processus de streaming.RequestConfig
(Optionnel) : Paramètres de configuration de la requête.
Retourne :
void
// Récupère tous les paths d'un pas dans le graphset 'miniCircle'
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "miniCircle",
useMaster: true,
};
let count = 0;
let resp = await conn.uqlStream(
"n().e().n() as paths return paths{*}",
{
onData: async (res) => {
let paths = res.data.get(0).asPaths();
count = count + paths.length;
console.log(count);
},
onEnd: () => {
console.log("END");
},
onStart: () => {
console.log("Start");
},
onError: (err) => {
console.log(err);
},
},
requestConfig
);
Start
1250
1392
END
Exemple Complet
import { ConnectionPool, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
import { GraphExra } from "@ultipa-graph/ultipa-node-sdk/dist/connection/extra/graph.extra";
import { getEdgesPrintInfo } from "@ultipa-graph/ultipa-node-sdk/dist/printers/edge";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
import { ListFormat } from "typescript";
let sdkUsage = async () => {
// Configurations de connexion
//URI example: hosts="mqj4zouys.us-east-1.cloud.ultipa.com:60010"
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061",
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
// Établit la connexion à la base de données
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
// Configurations de la requête
let requestConfig = <RequestType.RequestConfig>{
graphSetName: "miniCircle",
useMaster: true,
};
// Récupère 10 nodes et imprime la valeur de la propriété _id et name de celui retourné en premier
let resp = await conn.uql(
"find().nodes({@movie}) as n return n{*} limit 10",
requestConfig
);
let node_list = resp.data?.get(0).asNodes();
console.log(node_list[0].id, node_list[0].get("name"));
};
sdkUsage().then(console.log).catch(console.log);