2017-10-25 27 views
0

私はgraphQLでmongoDBコレクションにアクセスしています。これは、DBのデータです:GraphQL:部分文字列の一致を取得

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

クエリ

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

{ todo(item: "texture"){ itemId, item } }結果しかし、私は部分的に与えられた文字列に一致するデータセットを、見つける必要があります。 だから文字列turは、両方のデータセットを生じるはずである:テックスTUR E、PIC 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'メソッドの入力です。これはあなたが興味を持っているような仕事をするためのモンゴの責任です。 – cbartosiak

答えて

0

あなたは(モンゴ)を構築する必要があります

これは、$regex演算子の短い構文です。このクエリは、ToDoMongo.findメソッドコードで作成する必要があります。

関連する問題