如何更改我的突变以接受一组 ID 而不是单个 ID?

问题描述

我有一个匿名用户使用的购物车,并希望将购物车通过突变传递到数据库中。我创建了一个测试,但不能一次传递多个值。我最终得到了一个类似的错误......

[GraphQL error]: Message: Variable "$id" got invalid value ["87b7dsfg6ds78ga","36b34b5hb5hjbj23b","36b34b5hb5hjbj23b"]; ID cannot represent value: ["87b7dsfg6ds78ga","36b34b5hb5hjbj23b"],

这是我的突变:

const ADD_TO_CART_MUTATION = gql`
  mutation ADD_TO_CART_MUTATION($id: ID!) {
    addToCart(productId: $id) {
      id
    }
  }
`;


export default function SendToCartButton() {
    var cartItems = useReactiveVar(cartItemsVar);
    console.log(cartItems)



    const [sendToCart] = useMutation(ADD_TO_CART_MUTATION,{
        variables: { id: cartItems },refetchQueries: [{ query: CURRENT_USER_QUERY }],});



    return (
        <div className="add-to-cart-button" >
            <CartButton onClick={sendToCart}>
                Send To Cart db
            </CartButton>
        </div>
    );
}

我尝试将突变配置为 [ID]!但得到:

[GraphQL error]: Message: Variable "$id" of type "[ID!]" used in position expecting type "ID".,Location: [object Object],[object Object],Path: undefined

谁能解释一下我需要做什么?

谢谢!

解决方法

利用[ID!]!

  • 指出输入将是一个不能有任何空条目且 $id 不能为空的类型 ID 列表
const ADD_TO_CART_MUTATION = gql`
  mutation ADD_TO_CART_MUTATION($id: [ID!]!) {
   ...
  }
`;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...