javascript - 在 React 和 Graphql 中操作数据数组
问题描述
我正在尝试操纵这些数据以与 graphql 做出反应。如您所见,我在 graphql 游乐场中有这些数据或输入,这就是我希望输入的样子:
在我的前端,我有一个 cartItem,里面有一个对象和数组,包括产品名称、id 等等。我希望输入看起来像我上面提供的示例。有没有办法做到这一点?
代码和数据
这就是我的cart's Item Data
样子。
购物车项目数据:
[
{
id: "6109401fd86d352a70e3694e",
name: "asasasasa",
sku: "sasa",
shippingTime: "1628812800000",
quantity: 1,
},
{
id: "61051c14f25d8830a8e238c0",
name: "Pringles Sour Cream & Onion Potato Crisps 158g",
sku: "sad89f79dsafs",
shippingTime: "1627084800000",
quantity: 1,
},
];
如前面的示例所述,我想要的只是产品的 id 和数量。
Order.js
const [cartItems, setCartItems] = useContext(CartContext);
const [createOrder, { data, loading }] = useMutation(CREATE_ORDER_MUTATION);
const qty = cartItems.map(({ quantity }) => {
return quantity;
});
const cartItemId = cartItems.map(({ id }) => {
return id;
});
function onSubmit() {
createOrder({
variables: {
qty: qty,
products: cartItemId,
paymentMethod: paymentMethod,
address: address,
},
})
}
每当我需要安慰某人时。如果你登录cartItemId
,你会得到这样的东西:
我的qty
.
如果您有任何其他问题或需要任何其他代码,请告诉我,我很乐意提供。
阿波罗突变:
const CREATE_ORDER_MUTATION = gql`
mutation createOrder(
$qty: Int!
$products: String!
$paymentMethod: String!
$address: String!
) {
createOrder(
orderedItems: [{ qty: $qty, products: $products }]
paymentMethod: $paymentMethod
address: $address
) {
id
orderedItems {
qty
products {
id
name
sku
description
}
}
}
}
`;
解决方案
下面的代码将转换cartItems
为所需的结果。您可以遍历 cartItems 并为每个项目创建一个具有所需结构的对象。
const orderedItems = cartItems.map(({ id, quantity }) => {
return {
qty: quantity,
products: id,
};
});
完整的代码看起来像这样
const [cartItems, setCartItems] = useContext(CartContext);
const [createOrder, { data, loading }] = useMutation(CREATE_ORDER_MUTATION);
// Restructure the array to desired format
const orderedItems = cartItems.map(({ id, quantity }) => {
return {
qty: quantity,
products: id,
};
});
console.log(orderedItems); // To check if it looks correct
function onSubmit() {
createOrder({
variables: {
orderedItems: orderedItem,
paymentMethod: paymentMethod,
address: address,
},
})
}
推荐阅读
- tomcat9 - 我无法运行 tomcat 服务器版本 9
- node.js - NestJS HttpService 同时调用多个端点
- flutter - 在列表视图生成器中使用不同的文本字段控制器
- subdomain - 从 godaddy 读取文档自定义子域点不起作用
- python - 为图像数据降维实施 SVD
- python - csv.reader 没有 open() 函数
- groovy - 使用 snakeYaml 在 YAML 文件中添加/附加内部(嵌套)键值
- html - 如何将 Materialize.min.js 从 Google Drive 链接到 Google Apps 脚本
- mysql - MySQL + Kubernetes statefulset 与定义的环境变量
- javascript - 如何让其余的 javascript 代码等到 fetch 命令完成