GraphQL:获取部分字符串匹配
Posted
技术标签:
【中文标题】GraphQL:获取部分字符串匹配【英文标题】:GraphQL: Get partial string matches 【发布时间】:2018-04-06 22:52:39 【问题描述】:我正在通过 graphQL 访问一个 mongoDB 集合。这是数据库数据:
"_id" : ObjectId("59ee1be762494b1df1dfe30c"),
"itemId" : 1,
"item" : "texture",
"__v" : 0
"_id" : ObjectId("59ee1bee62494b1df1dfe30d"),
"itemId" : 1,
"item" : "pictures",
"__v" : 0
查询 todo(item: "texture") itemId, item
导致
"data":
"todo": [
"itemId": 1,
"item": "texture"
]
但我需要找到部分匹配给定字符串的数据集。
所以字符串tur
应该导致两个数据集:texture, pictures
我的 graphQL Schema 如下所示:
var schema = new GraphQLSchema(
query: new GraphQLObjectType(
name: 'RootQueryType',
fields:
todo:
type: new GraphQLList(todoType),
args:
item:
name: 'item',
type: new GraphQLNonNull(GraphQLString)
,
resolve: (root, item, source, fieldASTs) =>
var projections = getProjection(fieldASTs)
var foundItems = new Promise((resolve, reject) =>
ToDoMongo.find(item, projections, (err, todos) =>
err ? reject(err) : resolve(todos)
)
)
return foundItems
)
)
【问题讨论】:
你能粘贴ToDoMongo.find
方法代码吗?我们需要知道您是如何构建查询的,因为必须对其进行调整以支持您想要的。
@cbartosiak 在发布的架构中,您会看到 resolve() 代码。在那里你看到ToDoMongo.find()
。所以我必须使用正则表达式?
是的,正则表达式是 Mongo find
方法的输入。做你感兴趣的工作是 Mongo 的责任。
【参考方案1】:
一般来说,你必须像下面这样构造(mongo)查询:
"item": /tur/
这是$regex
运算符的简短语法。您应该在 ToDoMongo.find
方法代码中构造此查询。
【讨论】:
以上是关于GraphQL:获取部分字符串匹配的主要内容,如果未能解决你的问题,请参考以下文章
在javascript匹配中获取正则表达式的单独部分[重复]