我想使用 Mongodb 服务器在桌面上显示一些文本,但它不起作用

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

我是学习 mongodb 的新手,当我在“/”上请求 api 时,它工作正常,但对于其他参数,它返回 404 错误

我尝试了双斜杠,所以它可以堆积起来,但没有任何作用

这是主要的index.js

import express, { json } from "express";
import { connectDataBase } from "./Helpers/ConnectDb.js";
import Router from "./Routes/Route.js";
const app = express()
const port = 2629

app.use(json())

connectDataBase()

app.use("/test", Router)

这是 Router.js

import { Router } from "express"
import { getAllUsers, createUser, getUserById, deleteUserById, test } from "../Services/Users.js"

const Route = Router()

Route.post("/test", test)

Route.get("/Users", getAllUsers)
Route.post("/Users", createUser)
Route.get("/Users:id", getUserById)
Route.delete("/Users:id", deleteUserById)

Route.get("/Products", getAllUsers)
Route.get("/Products", getUserById)
Route.post("/Products", createUser)
Route.delete("/Products", deleteUserById)

export default Route

这是 servicers/Users.js

import UserModel from "../Models/Users.js"

export const test = async (req, res) => {
    
    res.send("test")
}

export const getAllUsers = async (req, res) => {
    const users = await UserModel.find().select("-password")
    res.status(200).send({ data: users })
}

export const createUser = async (req, res) => {
    const body = req.body
    const user = new UserModel(body)
    await user.save()
    res.status(201).send({ message: "UserModel Added Successfully" })
}

export const getUserById = async (req, res) => {
    const id = req.params.id
    const user = await UserModel.findById(id)
    res.status(200).send({ data: user })
}

export const deleteUserById = async (req, res) => {
    const id = req.params.id
    const user = await UserModel.findByIdAndRemove(id)
    const users = await UserModel.find()
    res.status(200).send({ data: users })
}

我正在使用雷霆客户端进行API点击

javascript database mongodb express mongoose-schema
1个回答
0
投票

我查看了您的代码,看起来您想在从 Thunder 客户端点击时调用 API。

您的 Router.js 文件中有一个愚蠢的错误。

Route.get("/Users:id", getUserById)
Route.delete("/Users:id", deleteUserById)

我假设您想使用某个 ID 动态调用上述两个路由器。

让我们假设用户的 id 是 42iurh239rfbiuf3w,为了让您更好地理解,让我们将 id 硬编码到这些路由器。

因此,路线将是

Route.get("/Users:42iurh239rfbiuf3w", getUserById)
Route.delete("/Users:42iurh239rfbiuf3w", deleteUserById)

Users:42iurh239rfbiuf3w 是一个字符串,所以像路由 /home 一样,我们调用 http://localhost:5000/home 来调用 /home,你应该调用 http://localhost:5000/Users:42iurh239rfbiuf3w 来访问它。

但我们正在尝试访问这些路线,如下所示:

Route.get("/Users/42iurh239rfbiuf3w", getUserById)
Route.delete("/Users/42iurh239rfbiuf3w", deleteUserById)

因此,您需要使其动态化,以便它知道这些是动态路由。您可以按照以下方式进行:

Route.get("/Users/:id", getUserById)
Route.delete("/Users/:id", deleteUserById)

顺便说一下,:id 表示一个人的任何 id。 这样它就可以轻松地向 :id 添加 id,如 /Users/42iurh239rfbiuf3w,

现在,在其他代码正常工作的情况下,您可以不间断地调用路线。

我希望这有帮助。

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