GraphQL API ile EtkileşimYanıttaki bir alanın yazıldığı yolu değiştirme
Yanıttaki bir alanın yazıldığı yolu değiştirme
Bu soru Reddit'te gündeme geldi:
I have:
allMdx { edges { node { frontmatter { date(formatString: "MMMM DD, YYYY") } } } }I need
frontmatter.dateto bepublishedAt:allMdx { edges { node { publishedAt: frontmatter{date(formatString: "MMMM DD, YYYY")} } } }Problem is, when I do this, I end up with:
{ "publishedAt": { "date": "February 06, 2021" } }Instead of (which is what I need):
{ "publishedAt": "February 06, 2021" }Is it even possible to alias nested fields like this?
Başka bir deyişle, GraphQL sunucusuna yanıtın şeklini düzleştirmesini söylemek mümkün mü? Mümkünse, nasıl yapılır?
İşte Gato GraphQL ile aşağıdaki eklentilerden yararlanılan bir çözüm:
- Multiple Query Execution, GraphQL işlemleri arasında bir değişkenin değerini
@exportetmek için - PHP Functions via Schema, bu değeri
_echoalanı aracılığıyla istenen konumda yeniden yazdırmak için
@export ile, ilk bir queries işleminin bir sonucu değişkene aktarmasını sağlayabilir; ardından bu değişkeni okuyacak ve yanıtta beklenen konuma yazdıracak ikinci bir queries işlemi tanımlayabiliriz:
query ExportDate
{
allMdx {
edges {
node {
frontmatter {
date(formatString: "MMMM DD, YYYY")
@export(as: "date")
}
}
}
}
}
query PrintRelocatedDate($date: String)
@depends(on: "ExportDate")
{
allMdx {
edges {
node {
publishedAt: _echo(value: $date)
}
}
}
}...ardından queries çalıştırılarak (?operationName=PrintRelocatedDate aktarılarak) şu yanıt elde edilir:
{
"data": {
"allMdx": {
"edges": [
{
"frontmatter": {
"publishedAt": "February 06, 2021"
},
"publishedAt": "February 06, 2021"
}
]
}
}
}