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