+1 for this feature.
Would it be possible to make it more clear in docs that upsert variables aren’t currently supported? (I spent a lot of time trying to debug this today when I came across the problem in pydgraph and then reproduced a minimal example using raw curl
requests.)
Minimal Example
Set the schema using GraphQL:
# schema.graphql
type Project {
id: String! @id
name: String @search(by: [term])
description: String @search(by: [term])
}
Create the schema:
curl -X POST localhost:8080/admin/schema --data-binary '@schema.graphql'
Create inital data:
curl -H "Content-Type: application/json" -X POST localhost:8080/mutate?commitNow=true -d $'
{
"set": [
{
"Project.id": "06b49118-a34a-4254-b1a1-49e3096676aa",
"Project.name": "test",
"Project.description": "test",
"dgraph.type": "Project"
},
{
"Project.id": "8296209e-9e3e-4170-892f-14ca17281eca",
"Project.name": "test",
"Project.description": "test",
"dgraph.type": "Project"
}
]
}' | jq
Demonstrate the problem:
First example fails with variable
curl -H "Content-Type: application/json" -X POST localhost:8080/mutate?commitNow=true -d '
{
"query": "query foo($id: string) { bar(func: eq(Project.id, $id )) {v as uid} }",
"delete": {
"uid": "uid(v)"
},
"variables": {"$id": "8296209e-9e3e-4170-892f-14ca17281eca"}
}' | jq
The response bar
query is blank:
{
"data": {
"code": "Success",
"message": "Done",
"queries": {
"bar": []
},
"uids": {}
},
"extensions": {
"server_latency": {
"parsing_ns": 44507,
"processing_ns": 837772,
"encoding_ns": 29162,
"assign_timestamp_ns": 757242,
"total_ns": 1750146
},
"txn": {
"start_ts": 21328,
"commit_ts": 21329
}
}
}
Second example works with a hard-coded data
curl -H "Content-Type: application/json" -X POST localhost:8080/mutate?commitNow=true -d '
{
"query": "query foo($id: string) { bar(func: eq(Project.id, \"8296209e-9e3e-4170-892f-14ca17281eca\" )) {v as uid} }",
"delete": {
"uid": "uid(v)"
},
"variables": {"$id": "8296209e-9e3e-4170-892f-14ca17281eca"}
}' | jq
The response bar
query is populated:
{
"data": {
"code": "Success",
"message": "Done",
"queries": {
"bar": [
{
"uid": "0x4ec9"
}
]
},
"uids": {}
},
"extensions": {
"server_latency": {
"parsing_ns": 85802,
"processing_ns": 1154781,
"encoding_ns": 50707,
"assign_timestamp_ns": 507082,
"total_ns": 1828617
},
"txn": {
"start_ts": 21309,
"commit_ts": 21310,
"preds": [
"1-Project.description",
"1-Project.id",
"1-Project.name",
"1-dgraph.type"
]
}
}
}