reactjs - 如果它是空的,如何从graphQL查询中删除变量?
问题描述
如果变量 searchQuery 的值是空字符串,我如何省略它,并且在模板文字中有这个逻辑?
代码:
var query = `query RunSearch($searchQuery: String, $mType: MediaType, $filterMethod:[MediaSort], $season:MediaSeason){
Page(perPage:10, page: 1){
pageInfo {
total
currentPage
lastPage
hasNextPage
perPage
}
media(type: $mType, search: $searchQuery, sort:$filterMethod, season:$season){
title{
english
}
format,
description(asHtml:true),
averageScore,
studios(isMain:true) {
nodes {
name
}
},
coverImage {
large
color
},
genres
}
}
}`;
解决方案
您可以使用使用模板字符串的函数来构建查询。您可以添加更多变量或控件以满足您的需求。
const myvars = {
searchQuery : "",
mType : "pdf",
filterMethod : "asc",
season : ""
}
const buildQuery = (vars) => {
let sq = vars.searchQuery == "" ? "" : "$searchQuery: String,"
let mt = vars.mType == "" ? "" : "$mType: MediaType,"
let fm = vars.filterMethod == "" ? "" : "$filterMethod: [MediaSort],"
let ss = vars.season == "" ? "" : "$season:MediaSeason"
var query = `query RunSearch(${sq} ${mt} ${fm} ${ss}){
Page(perPage:10, page: 1){
pageInfo {
total
currentPage
lastPage
hasNextPage
perPage
}
media(type: $mType, search: $searchQuery, sort:$filterMethod, season:$season){
title{
english
}
format,
description(asHtml:true),
averageScore,
studios(isMain:true) {
nodes {
name
}
},
coverImage {
large
color
},
genres
}
}
}`;
return query;
}
let myquery = buildQuery(myvars);
console.log(myquery)
推荐阅读
- angular - Angular 开始监听 AppData/Local/Programs/Git
- kubernetes-helm - Helm:coalesce.go:196:警告:不能用非表覆盖表用于 env(map [])
- java - 从后台任务将日志保存到文件系统
- reactjs - Framer:检查元素是否进入视口
- python - 如何排除特定api应用python中间件的所有授权
- c++ - 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组。实际上比较的值是多少,
- ios - 无法将“Int”类型的值转换为预期的参数类型“IndexPath”
- python - Matplotlib - 为什么我保存的动画视频是空白的?
- javascript - console.log() 不显示实际值
- image - 来自 zarr 文件的 dask 直方图(一个大 zarr 文件)