微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Express.js 中的 req.query 未定义

如何解决Express.js 中的 req.query 未定义

我正在 MERN 应用程序中实现 Stripe Checkout

客户成功付款后,他/她会被重定向到结帐成功 URL,其中 CheckoutSuccess 页面会呈现在屏幕上。此外,Stripe 在 URL 中发送 session_id,如下图所示。

enter image description here

CheckoutSuccess 页面呈现时,我向 POST 发送一个 /apI/Order/success 请求。在路由处理函数中,我需要访问 Stripe 发送的 session-id(在 URL 中)。

我面临的问题是当我尝试 console.log req.query 时,我得到一个空白对象;因此 req.query.session_id 返回 undefined

enter image description here

为什么 req.query一个空白对象?

代码片段如下: orderRoutes.js

const express = require("express");
const asyncHandler = require("express-async-handler");
const dotenv = require("dotenv");
dotenv.config();

const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);

const router = express.Router();

router.post(
  "/success",asyncHandler(async (req,res) => {
    console.log(req.query);
    const session = await stripe.checkout.sessions.retrieve(
      req.query.session_id
    );
    const customer = await stripe.customers.retrieve(session.customer);
    res.send(customer);
  })
);

module.exports = router;

orderSlice.js

import { createSlice,createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";

const initialState = {
  status: "idle",customer: null,error: null,};

export const fetchCustomer = createAsyncThunk(
  "order/fetchCustomer",async (_,{ rejectWithValue }) => {
    try {
      const { data } = await axios.post("/apI/Order/success");
      return data;
    } catch (err) {
      return rejectWithValue(err.response.data);
    }
  }
);

export const orderSlice = createSlice({
  name: "order",initialState,reducers: {},extraReducers: {
    [fetchCustomer.pending]: (state,action) => {
      state.status = "loading";
    },[fetchCustomer.fulfilled]: (state,action) => {
      state.status = "succeeded";
      state.customer = action.payload;
    },[fetchCustomer.rejected]: (state,action) => {
      state.status = "Failed";
      state.error = action.payload.message;
    },},});

export default orderSlice.reducer;

解决方法

离开评论并进入答案

您的 fetch() 调用没有传递任何数据或查询参数,对吗?这似乎是这里的问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。