搜索

首页  >  问答  >  正文

在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粉207969787442 天前565

全部回复(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
  • 取消回复