首頁  >  問答  >  主體

在Express中透過POST方法有效率地傳送數組的問題

我在這裡是新手,正在學習Express,雖然我認為我在正確的軌道上,但目前我在POST方法上遇到了一些問題。我現在遇到的情況如下:

const express = require('express');
const { stories } = require('../data/books.js').infoBooks;

const routerStories = express.Router();
routerStories.use(express.json());

routerStories.post('/', (req, res) => {
    const newBook = req.body;
    stories.push(newBook);
    res.send(JSON.stringify(stories));  
});

我已經嘗試解決了幾天。儘管我已經做了很多研究,但我還是無法解決它。 請您給予您的觀點和經驗,以便能夠解決這個問題。

P粉207969787P粉207969787369 天前495

全部回覆(1)我來回復

  • P粉543344381

    P粉5433443812023-09-17 00:59:05

    我在你的程式碼中發現了一些問題。我假設你貼了原始程式碼,所以這裡是你需要改變的地方。

    1.) 我不認為這一行是有效的javascript程式碼,或者如果它是的話,它有點奇怪。 const { stories } = require('../data/books.js').infoBooks; 如果infoBooks是一個包含故事的對象,只需匯入該物件

    2.) 你不需要將路由設定為json,因為路由預設存在該方法,並且會接受json作為有效的回應

    3.) 可能你沒有使用不同的路由名稱,而另一個路由正在使用相同的字串文字。

    你沒有提供足夠的信息,所以你使用路由本身可能還有其他問題,但根據你發布的內容,這些是我發現的所有問題。希望能幫到你!

    import {infoBooks} from "../data/books.js"
    import express from "express";
    const router = express.Router();
    
    routerStories.post('/createNewBook', (req, res) =\> {
        const newBook = req.body;
        if(!newBook){
           res.status(400).json({message: "invalid arguments"})
           return
        }
        infoBooks.stories.push(newBook);
        //we don't need to set status here because by default the response will be 200
        res.json({infoBooks.stories});
        return 
    })

    回覆
    0
  • 取消回覆