Jean-Baptiste Musso
NantesJS, 17 mars 2015
Objectif de la présentation :
likes
name: "jbmusso"
age: 30
type: "person"
since: 2012
name: "JavaScript"
type: "language"
Intérêt : permet de développer son application sans (trop) se soucier de la base graphe utilisée.
Framework Open Source
// Ajouter Seb et Marie dans le graph
seb = g.addVertex(['type': 'user', 'name': 'Seb'])
marie = g.addVertex(['type': 'user', 'name': 'Marie'])
// Ajouter une relation de type follow de Seb vers Marie
g.addEdge(seb, marie, 'follows', ['since': 20140924])
// Delete toutes les vertex de type 'person'
g.V('type', 'person').delete()// Update sur tous les vertex de type 'user'
g.V('type', 'user').sideEffect({
it.setProperty('type') = 'person'
})// Récupérer tous les utilisateurs
g.V('type', 'user');
// Récupérer tous les utilisateurs qui s'appellent Bob
g.V('type', 'user').has('name', 'Marie');g.v(1).as('myself') // Point de départ, stocké en tant que 'myself'
.out('follow') // Trouver les utilisateurs que je follow
.out('follow') // Pour chacun, trouver ceux qu\'ils suivent
.dedup() // Filtrer les doublons éventuels
.except('myself') // Filtrer le point de départPrincipe général :
Exemple : trouver tous les utilisateurs suivis (followed) par les utilisateurs que je suis (follow) moi-même.
https://github.com/jbmusso/gremlin-client
client.execute(script, params, function(err, results) {
if (!err) {
console.log(results); // Array
}
});Mode callback
Mode stream
var gremlin = require('gremlin-client');
var client = gremlin.createClient(8182, 'localhost');
var script = 'g.V("name", userName)';
var params = { userName: 'Bob' };var vertexStream = client.stream(script, params);
vertexStream.on('data', function(vertex) {
console.log(vertex)
});
var es = require('event-stream');
vertexStream
.pipe(es.map(function(vertex, callback) {
vertex.fromNode = true;
callback(null, vertex);
}))
.pipe(es.stringify());
var gremlin = require('gremlin-client');
var client = gremlin.createClient({ language: 'nashorn' });
// Expérimental: création d'une fonction dont la seule utilité
// est de récupérer son body avec Function.toString();
var script = function() {
g.V("type", user).filter(function(it) {
return it.get().value('name') === nameFilter;
});
}
var s = client.stream(script, { type: 'user', nameFilter = 'Bob' });
Objectif : permettre aux développeurs JavaScript de commencer plus rapidement avec Gremlin en écrivant des requêtes dans un langage dont ils connaissent déjà la syntaxe.
jbmusso@gmail.com
Twitter : @jbmusso
GitHub : @jbmusso
(Thanks!)