Использование Предиката в гремлиновском JavaScript - PullRequest
0 голосов
/ 10 июня 2018

Я хочу использовать gremlin-javascript для обхода удаленного графа и получения списка вершин, чей идентификатор находится в списке предопределенных идентификаторов.

const gremlin = require('gremlin');
const Graph = gremlin.structure.Graph;
const GraphPredicate = gremlin.process.P;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;

const graph = new Graph();
const g = graph.traversal().withRemote(new DriverRemoteConnection('ws://localhost:8182/gremlin'));

g.V()
    .has('id', GraphPredicate.within([414, 99999]))
    .toList()
    .then(function (result) {
        console.log(result);
    });

Выше приведеныкоды, которые я пробовал, но это дало мне пустой список вершин, тогда как я ожидал, что в результате будет вершина (414) .

Более того, когда я тестировал консоль gremlin, используя приведенное ниже утверждение, в результате я получил вершину (414) .

:> g.V().hasId(within(414,99999))

ИтакУ меня есть несколько вопросов здесь:

  • Я что-то пропускаю в конфигурации, чтобы использовать предикат?
  • В методе javascript GraphPredicate.within ([414, 99999])) - это параметр, который должен быть только массивом элементов или списком элементов, разделенных запятой , как в случае с gremlin-приставка?Кстати, я пробовал оба пути, но всегда получал пустой результат.

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Я не могу комментировать, но для использования id вам нужно использовать gremlin.process.t.id

Пример:

в Gremlin .by(id)
в JS .by(gremlin.process.t.id)

Надеюсь, это полезно

0 голосов
/ 11 июня 2018

Идентификатор является специальным свойством в TinkerPop, и его нельзя получить с помощью свойства name "id".

. В вашем случае правильный способ получения по идентификаторам должен быть следующим:

g.V().hasId(P.within(414, 99999)).toList()
  .then(result => console.log(result));

Кроме того, это можно упростить, удалив вызов within():

g.V().hasId(414, 99999).toList()
  .then(result => console.log(result));
...