Использование лямбда-выражения filter в gremlin с помощью javascript

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

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

Мой текущий код 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();
    }
})();

person iLevi    schedule 24.02.2020    source источник


Ответы (1)


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

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

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

person stephen mallette    schedule 25.02.2020