外出审批系统如何在后台实现API PATCH请求?

问题描述 投票:0回答:1

我已经使用 MERN Stack 创建了一个外出审批系统,我已经实现了以下代码以将 LeaveStatus 设置为“已批准”,但刷新页面后更改不会保留。通过邮递员请求 PATCH 没有问题。

Mongoose 模式离开状态片段

leaveStatus : { type : String, default : 'Not Approved', enum : [ 'Approved', 'Not Approved'] }

前端外出审批功能片段:

`constapproveOuting=async()=>{ const response = wait fetch('api/outings/' + outing._id, { 方法:“补丁” })

    if (response.ok) {
        const json = await response.json()
        var updatedJson = {...json, leaveStatus : "Approved"}
        dispatch({type: 'PATCH_OUTING', payload: updatedJson})
    }
}`

郊游减速器片段:

`案例'PATCH_OUTING': // 查找要更新的郊游索引 const outingIndex = state.outings.findIndex((outing) => outing._id === action.payload._id);

        // Create a copy of the outings array with the updated outing
        const updatedOutings = [...state.outings];
        updatedOutings[outingIndex] = action.payload;

        return {
            outings: updatedOutings
        };`

我创建了一个临时变量来保存当前的 json 并编辑 leftStatus 以批准并将其作为我的有效负载发送。

javascript node.js mongodb mongoose crud
1个回答
0
投票

您需要在后端实现一个处理 PATCH 请求的路由。此路线应更新 MongoDB 数据库中的

leaveStatus
字段。在您的后端代码中,您可能有类似的内容:

// Import necessary modules
const express = require('express');
const router = express.Router();
const Outing = require('../models/outing'); // Import your Mongoose model

// Define the PATCH route for updating outing leaveStatus
router.patch('/outings/:id', async (req, res) => {
  try {
    const outing = await Outing.findByIdAndUpdate(
      req.params.id,
      { leaveStatus: 'Approved' }, // Update the leaveStatus to 'Approved'
      { new: true } // Return the updated document
    );

    if (!outing) {
      return res.status(404).json({ message: 'Outing not found' });
    }

    res.json(outing); // Return the updated outing
  } catch (error) {
    console.error(error);
    res.status(500).json({ message: 'Server Error' });
  }
});

module.exports = router;
© www.soinside.com 2019 - 2024. All rights reserved.