Показывает ли Gremlin-console все методы, доступные для конкретного объекта?

Есть ли способ показать в gremlin-console все методы, доступные для конкретного объекта?

Например, в gremlin-console, если я набираю g.V().hasLabel("person") и хочу посмотреть, какие методы я могу связать/вызвать для объекта, возвращаемого g.V().hasLabel("person"). Как ты это делаешь?


person Glide    schedule 07.03.2018    source источник


Ответы (1)


Ответ заключается в использовании клавиши <Tab>.

gremlin> "test".c
capitalize()           center(                charAt(                chars()                codePointAt(           codePointBefore(       codePointCount(        codePoints()           collectReplacements(   compareTo(             
compareToIgnoreCase(   concat(                contains(              contentEquals(         count(

Однако я обнаружил, что он не работает для чего-то вроде g.V().o, который, как я надеялся, показал бы out(). Судя по всему, заводная оболочка (на которой основана консоль Gremlin), похоже, не хочет выполнять автозаполнение в свободном API. Кажется, он работает только с первым объектом, для которого вы вызываете метод:

gremlin> g.
E(                        V(                        addV(                     addV()                    close()                   inject(                   tx()                      withBindings(             withBulk(                 
withComputer(             withComputer()            withPath()                withRemote(               withSack(                 withSideEffect(           withStrategies(           withoutStrategies(        anonymousTraversalClass   
bytecode                  graph                     strategies                
gremlin> x = g.V();[]
gremlin> x.o
option(     optional(   or(         order(      order()     otherV()    out(        outE(       outV()      
gremlin> x.o

Это воняет ... это не совсем проблема TinkerPop - мы полагаемся на groovysh для этой функциональности. Мы мало что можем там сделать, я не думаю....

Конечно, вы используете DSE Graph, что означает, что у вас есть доступ к DataStax Studio, которая не только имеет автозаполнение, которое вы ищете, но и поддерживает схему (и многое другое!). Я бы посоветовал вам переключиться на это.

person stephen mallette    schedule 08.03.2018
comment
Странно, но у меня не работает dse gremlin-console. Но это работает с apache-tinkerpop-gremlin-console. Это ожидается? - person Glide; 09.03.2018
comment
да - теперь, когда вы это говорите, это ожидаемо. консоль Gremlin переведена в удаленный режим для связи с DSE Graph. В этом режиме то, что вы вводите в консоли, оказывается строкой, отправляемой на сервер для оценки и возвращаемого результата. Следовательно, когда вы выполняете <tab>, это действительно не имеет никакого эффекта, потому что он не оценивает код локально - например, оболочка groovy еще меньше участвует в определении того, что делать в этом случае. я бы определенно переключился на DataStax Studio, если вам нужна такая функциональность. - person stephen mallette; 09.03.2018
comment
Обязательно попробую студию DataStax. Возможно ли тогда использовать консоль Gremlin apache для общения с удаленным графиком DSE, чтобы у меня была функция автозаполнения. Когда я попробовал, я получил следующую ошибку при выполнении g.V(): io.netty.handler.codec.DecoderException: org.apache.tinkerpop.gremlin.driver.ser.SerializationException: java.lang.IndexOutOfBoundsException: Index: 121, Size: 0 в io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:98) - person Glide; 13.03.2018
comment
нет - тоже не получится. консоль должна быть в удаленном режиме для работы с DSE Graph. поэтому, даже если вы используете консоль tinkerpop, вам нужно перевести ее в удаленный режим, чтобы общаться с DSE Graph. - person stephen mallette; 13.03.2018