Gremlin: предоставленный обходчик не сопоставляется со значением

g.V()
    .has('atom', '_value', 'red').fold()
    .coalesce(unfold(), addV('atom').property('_value', 'red')).as('atom')
    .out('view').has('view', '_name', 'color').fold()
    .coalesce(unfold(), addE('view').from('atom').to(addV('view').property('_name', 'color')))

Выдает мне ошибку:

The provided traverser does not map to a value: []->[SelectOneStep(last,atom)] (597)

Что это значит?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
5
0
1 146
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Таким образом, когда за as() следует fold(), он удаляет переменную, установленную на шаге as(). Вместо этого я использовал aggregate() следующим образом:

g.V()
    .has('atom', '_value', 'red')
    .fold().coalesce(
        unfold(), 
        addV('atom').property('_value', 'red')
    )
    .aggregate('atom')
    .out('view').has('view', '_name', 'color')
    .fold().coalesce(
        unfold(), 
        addE('view')
            .from(select('atom').unfold())
            .to(addV('view').property('_name', 'color'))
            .inV()
    )

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

Добавление к этому на случай, если кто-то еще столкнется с этим.

Эта конкретная ошибка возникает, когда вы используете идентификатор в виде строки в from() вместо объекта вершины.

Чтобы понять, что я имею в виду, в качестве простого теста запустите следующий запрос гремлина:

g.addE('view').from('atom').to(addV('view').property('_name', 'color'))

затем запустите этот запрос:

g.addE('view').from(V('atom')).to(addV('view').property('_name', 'color'))

Первый запрос выдаст указанную выше ошибку, второй — нет.

Другие вопросы по теме