路由器 localhost:4000/rooms/book/1 犯了什么错误?

问题描述 投票:0回答:1
const express = require("express");
const { body, validationResult } = require("express-validator");

const app = express();
const PORT = 4000;

app.use(express.json());

const rooms = [];
const booking = [];

// creating room
app.post(
  "/rooms/create",
  [
    body("seatsAvailable").notEmpty().isInt(),
    body("amenities").notEmpty().isArray(),
    body("pricePerHour").notEmpty().isFloat(),
  ],
  (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).send({ errors: errors.array() });
    }

    const room = {};
    room.id = rooms.length + 1;
    Object.assign(room, req.body);
    rooms.push(room);
    res.status(201).send(room);
  }
);

// booking rooms

app.post(
  "/rooms/book/:roomId",
  [
    body("customerName").notEmpty().isAlphanumeric(),
    body("dateOfBooking").notEmpty().isDate(),
    body("startTime").notEmpty().isString(),
    body("endTime").notEmpty().isString(),
    body("seatsRequired").notEmpty().isInt(),
  ],
  (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).send({ errors: errors.array() });
    }
    if (rooms.length === 0) {
      return res.status(404).send({ message: "No rooms available" });
    }
    const roomId = req.params.roomId;
    const room = rooms.find((room) => room.id == parseInt(roomId));
    if (!room) {
      return res
        .status(404)
        .send({ message: `Room is not found with number ${roomId}` });
    }

    console.log(room);
  }
);

// get rooms
app.get("/rooms", (req, res) => {
  res.send(rooms);
});

app.listen(PORT, () => {
  console.log("server connected successfully!");
});


我正在尝试创建一个大厅预订 api。在下面的代码中,当我在邮递员中向端点发出请求以测试路由器时,我在终端中得到以下信息,但我找不到我犯的错误。

终端错误:

node index.js 
server connected successfully!
SyntaxError: Expected ',' or '}' after property value in JSON at position 54
    at JSON.parse (<anonymous>)
    at parse (/home/shri/Desktop/Roadmap-Day38-Hall-Booking-API/node_modules/body-parser/lib/types/json.js:92:19)
    at /home/shri/Desktop/Roadmap-Day38-Hall-Booking-API/node_modules/body-parser/lib/read.js:128:18
    at AsyncResource.runInAsyncScope (node:async_hooks:206:9)
    at invokeCallback (/home/shri/Desktop/Roadmap-Day38-Hall-Booking-API/node_modules/raw-body/index.js:238:16)
    at done (/home/shri/Desktop/Roadmap-Day38-Hall-Booking-API/node_modules/raw-body/index.js:227:7)
    at IncomingMessage.onEnd (/home/shri/Desktop/Roadmap-Day38-Hall-Booking-API/node_modules/raw-body/index.js:287:7)
    at IncomingMessage.emit (node:events:518:28)
    at endReadableNT (node:internal/streams/readable:1696:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)


这是网址请求:

方法:POST

localhost:4000/rooms/book/1

这是我的请求正文

{
    "customerName": "Jeeva",
    "dateOfBooking": 12-04-2024,
    "startTime": "10.00 AM",
    "endTime": "1.00 PM",
    "seatsRequired": 2
}

请帮我解决这个问题。谢谢

node.js express express-validator
1个回答
0
投票

在代码中更改此

body("customerName").notEmpty().isAlphanumeric(),
    body("dateOfBooking").notEmpty().isDate(),
    body("startTime").notEmpty().isString(),
    body("endTime").notEmpty().isString(),
    body("seatsRequired").notEmpty().isInt(),

到此

body("customerName").notEmpty().isAlphanumeric(),
    body("dateOfBooking").notEmpty().isDate(),
    body("startTime").notEmpty().isString(),
    body("endTime").notEmpty().isString(),
    body("seatsRequired").notEmpty().isInt()

我所做的就是删除最后一个逗号,因为它后面没有值

希望这有帮助!

编辑:

也更改此中的另一个逗号

© www.soinside.com 2019 - 2024. All rights reserved.