2017-10-25 1 views
0

graphql을 통해 mongoDB 컬렉션에 액세스하고 있습니다. 이것은 DB 데이터입니다 :GraphQL : 문자열 일치 부분 일치

{ 
    "data": { 
    "todo": [ 
     { 
     "itemId": 1, 
     "item": "texture" 
     } 
    ] 
    } 
} 

에서

{ 
    "_id" : ObjectId("59ee1be762494b1df1dfe30c"), 
    "itemId" : 1, 
    "item" : "texture", 
    "__v" : 0 
} 
{ 
    "_id" : ObjectId("59ee1bee62494b1df1dfe30d"), 
    "itemId" : 1, 
    "item" : "pictures", 
    "__v" : 0 
} 

쿼리를 { todo(item: "texture"){ itemId, item } } 결과하지만 부분적으로 주어진 문자열에 일치하는 데이터 세트를 찾을 필요가있다. 그래서 문자열 tur 두 데이터 세트 발생한다 : 텍스 TUR 전자, 그림 TUR ES

내 graphQL 스키마는 다음과 같습니다 : 일반적으로

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 
     } 
     } 
    } 
    }) 
}) 
+0

'ToDoMongo.find' 메소드 코드를 붙여 넣을 수 있습니까? 쿼리를 구성하는 방법을 알아야합니다. 원하는 것을 지원하기 위해 조정해야하는 항목이기 때문입니다. – cbartosiak

+0

@cbartosiak 게시 된 스키마에서 resolve() 코드를 볼 수 있습니다. 거기에'ToDoMongo.find()'가 보입니다. 그래서 거기에 정규식을 사용해야합니까? – user3142695

+0

예, 정규식은 Mongo'find' 메소드에 대한 입력입니다. 관심있는 직업을 수행하는 것은 Mongo의 책임입니다. – cbartosiak

답변

0

당신이 (몽고)를 구성해야

이것은 $regex 연산자에 대한 간단한 구문입니다. ToDoMongo.find 메소드 코드에서이 쿼리를 구성해야합니다.