Mon goose findById не будет возвращать ноль, если результат не найден - PullRequest
2 голосов
/ 14 марта 2020

когда я предоставляю несуществующий идентификатор, оператор if должен возвращать ошибку 404, но это не так. Insted отправляет ошибку 500

const express = require("express");
require("./db/mongoose");
const User = require("./models/user");


const app = express();
const port = process.env.PORT || 3000;

app.use(express.json());


app.get("/users/:id", (req, res) => {
  const _id = req.params.id;

  User.findById(_id)
    .then(user => {
      if (!user) {
        return res.status(404).send();
      }

      res.send(user);
    })
    .catch(e => {
      res.status(500).send();
    });
});

app.listen(port, () => {
  console.log("Server is up on port " + port);
});

1 Ответ

2 голосов
/ 14 марта 2020

Попробуйте проверить действительный ObjectId перед запросом,

const mongoose = require("mongoose")

app.get("/users/:id", (req, res) => {
  const _id = req.params.id;
  const isValidId = mongoose.Types.ObjectId.isValid(_id)

  if (!isValidId) return res.status(400).send("id is not valid")

  ... //continue your code here

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...