Cypher-запрос возвращает ошибку даже при выполнении запроса и сохранении мутаций - PullRequest
0 голосов
/ 11 апреля 2020

Я использую Neo4j с ApolloServer и GraphQL. Я хочу найти узел в Neo4j, и если он существует, я хочу обновить его свойства. Если нет, я хочу создать его и установить свойства. Я делаю это с помощью MERGE.

Моя проблема заключается в том, что я получаю ошибку

Property values can only be of primitive types or arrays thereof

при выполнении запроса на шифрование. Однако, когда я проверяю в Neo4j Desktop Browser, я вижу, что запрос фактически выполняется и мутации сохраняются на узле.

Это параметр, который я передаю запросу через " Панель «Переменные запроса» внизу:

{
  "props": {
    "sequence": {
      "group": "Temporary group",
      "label": "Sequence",
      "seq": 2
    }
  }
}

И я использую это так:

mutation updateLink($props: LinkInput) {
  UpdateLink(id: "90261bfe-f59e-4dd3-a6a8-9c48c01501d4", props: $props) {
    success
    seq {
      group
      label
      seq
    }
  }
}

Я готовлю выполнение шифрования следующим образом:

qargs.sequence = args.props.sequence;
const query = `
    MATCH (l:Link) WHERE l.id = $id
    MERGE (l)-[:IS]->(s:Sequence)-[:ON]->(l)
    ON CREATE SET s = {id: randomUUID()}, s += $sequence
    ON MATCH SET s += $sequence
    RETURN s AS seq
`;
let results = await session.run( query, qargs );

где «args» - это параметр, передаваемый в запрос.

В graphiql я получаю следующие выходные данные:

{
  "errors": [
    {
      "message": "Property values can only be of primitive types or arrays thereof",
      "code": "INTERNAL_SERVER_ERROR",
      "success": false
    }
  ],
  "data": {
    "UpdateLink": null
  }
}

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

...