我需要检查数组中某些元素的存在性
我有一个这样的数组
ar = ['一个','两个','三个']
我想知道如何单独检查下面的正则表达式代码中的元素,而不是通过数组映射并逐一检查在graphQL中是否存在的“ / something /”。
similar : allCockpitHello (filter: {Association : {value : {regex: "\/something/" }}} limit:2){
nodes{
Name{
value
}
}
答案 0 :(得分:0)
GraphQL不是灵丹妙药,它只是一种查询语言,它可以将您的需求“传输”到进行所有必要处理的引擎(本地客户端,远程服务器...)。
在这种情况下,您可能需要将数组和表达式作为变量传递给服务器(解析器)。如果处理成本很高,则应该已经定义,缓存,预处理等结果(相似关系)。
如果数据集很小,则可以完全在客户端执行此操作-遍历数组(使用graphql获取)。
答案 1 :(得分:0)
您需要使用正则表达式字符串作为解析器要使用的输入参数,GraphQL不会为您做过滤器,您需要根据您的输入在解析器中执行/调用该逻辑。
根据您的示例,您可以在架构和解析器上找到类似的内容:
type Node {
name: String!
}
type NodeQueries {
nodes (filterRegEx :String): [Node]!
}
一旦您在解析器上输入了字符串,过滤器机制的实现就由您决定。
const resolvers = {
...
NodeQueries: {
nodes: (parent, params) => {
const {filterRegEx} = params; // regex input string
const ar = ['one','two','three'];
// Create a RegExp based on the input,
// Compare the with the elements in ar and store the result...
// You might end up with ... res = ['one', 'three'];
// Now map the result to match your schema:
return _.map(res, name => ({name}) ); // to end up with [{name: 'one'}, {name: 'three'}]
}
}
...
}