Использование `filter` лямбда в гремлине с javascript - PullRequest
0 голосов
/ 25 февраля 2020

Я использую OrientDb с JavaScript, и я попытался с startWith, содержащим, предикаты, endWith, notConisting, notEndingWith, notStartingWith безуспешно. Может быть, это неправильная реализация с моей стороны, но я не нашел документации о том, как использовать. Я искал способ фильтрации с лямбдами, чтобы получить поведение sql like, но не увенчался успехом. Я пытался использовать метод , описанный в этом ответе , но он не работает на JavaScript. При использовании предикатов ответом является ошибка.

Я тоже это пробовал: Что эквивалентно запросам gremlin в gremlin javascript?

My текущий JavaScript код:

import * as gremlin from 'gremlin';
const traversal = gremlin.process.AnonymousTraversalSource.traversal;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
const TextPredicated = gremlin.process.TextP;
const authenticator = new gremlin.driver.auth.PlainTextSaslAuthenticator('usr', 'pwd');
const remote = new DriverRemoteConnection(
    'ws://localhost:8182/gremlin', {
    authenticator,
    traversalSource: 'g'
});

remote.addListener('socketError', (error) => { console.log(`socketError: ${error}`); });

(async () => {
    try {
        remote.open();
        const g = await traversal().withRemote(remote);
        const results = await g.V()
            .where('username', TextPredicated.containing('john'))
            .toList();
        console.log(results);
        remote.close();
    } catch (error) {
        console.log(error);
    } finally {
        remote.close();
    }
})();

1 Ответ

0 голосов
/ 25 февраля 2020

Вы не говорите, в чем ваша ошибка, но я думаю, что ваш Gremlin должен использовать has() вместо where():

const results = await g.V()
        .has('username', TextPredicated.containing('john'))
        .toList();

Также обратите внимание, что TextP не стал доступен, пока TinkerPop 3.4.0, поэтому вам нужно быть уверенным, что ваш график (в вашем случае OrientDB) поддерживает хотя бы эту версию TinkerPop.

...