2017-08-23 11 views
0

私はGraphCool、Lokka、Nodejsを持つプロジェクトに取り組んでいます。私はitemsIds: [ID!]を渡さなければなりません。文字列の配列が文字列リテラルに渡されると、配列は[id1, id2, id3]になり、突然変異には["id1", "id2", "id3"]が必要になります。問題はApollo GraphQLでも同じです。私は何とか次のコードを使って問題を解決しました。私は何か間違っているのですか?簡単な解決法はありますか? -Lokka突然変異で配列を渡すには?

  let cc = ''; 
      data.allCarts[0].items.map(item => cc = cc.concat(`'${item.id}',`)); 

      cc = cc.concat(`'${itemid}'`); 
      console.log('mogg ', cc); 
      cc = cc.replace(/'/g, '"'); 
      console.log('gogg ', cc); 

      let nodeid = data.allCarts[0].id; 
      console.log('Node:: ', nodeid, 'items:: ', cc); 

      client.mutate(`{ 
       uo: updateCart(id: "${nodeid}", itemsIds: [${cc}]){ 
        id 
        } 
      }` 
      ).then(
       (response) => { 
        console.log('cart update:: ', response.uo); 
        sendTextMessage(user, 'Done adding to cart, choose to add more'); 
       } 
       ) 
       .catch(error => console.error(error)); 

答えて

1

あなたの引数の値を直接クエリ文字列に挿入するのは厄介です。それは何のための変数なのですか?アポロと...

const mutation = `($nodeid: ID, $cc: [ID!]){ 
    uo: updateCart(id: $nodeid, itemsIds: $cc){ 
    id 
    } 
}` 

const variables = { nodeid, cc } 

client.mutate(mutation, variables) 

または::lokkaとその後

const cc = data.allCarts[0].items.map(item => item.id).concat(itemid); 

...

itemsIds

はそうのは彼らにそれを与えてみましょうIDの配列を探している

const mutation = gql`mutation UpdateCart($nodeid: ID, $cc: [ID!]){ 
    updateCart(id: $nodeid, itemsIds: $cc){ 
    id 
    } 
}` 

const variables = { nodeid, cc } 

client.mutate({mutation, variables}) 
関連する問題