почему мой запрос mongoose findOne возвращает более одного результата - PullRequest
0 голосов
/ 06 октября 2019

Я настраиваю маршрут для возврата определенной вещи из коллекции вещей, используя findOne и идентификатор объекта вещи в качестве параметра. почему результат не возвращает только одну совпавшую вещь?

Я попытался найти findOne с идентификатором в качестве параметра

Вот схема вещи

const mongoose = require("mongoose");
const thingSchema = mongoose.Schema({
title: { type: String, required: true },
description: { type: String, required: true },
imageUrl: { type: String, required: true },
userId: { type: String, required: true },
price: { type: Number, required: true }
});
module.exports = mongoose.model("Thing", thingSchema);

найти маршрут маршрута

  app.get("/api/stuff/:id", (req, res, next) => {
  Thing.findOne({
    _id: req.params.id
  })
    .then(thing => {
      res.status(200).json(thing);
    })
    .catch(error => {
      res.status(404).json({
        error: error
      });
    });
});

Я ожидал, что результат /api/stuff/:5d9834968e23a32580a1751b будет:

 {
        "_id": "5d9834968e23a32580a1751b",
        "title": "tecno camon 8",
        "description": "quality condition",
        "imageUrl": "https://i0.wp.com/www.techslize.com/wp-content    /uploads/2017/02/Tecno-camon-c8-black.png?resize=407%2C450&ssl=1",
        "price": 3000,
        "userId": "userID40282382",
        "__v": 0
    }

, но фактический результат - целая коллекция.

1 Ответ

0 голосов
/ 06 октября 2019

req.params происходит из сегментов пути URL, которые соответствуют параметру в определении маршрута, например /api/stuff/:id. Итак, с маршрутом, использующим это обозначение, и URL-адресом, таким как /api/stuff/5d9834968e23a32580a1751b, затем _id: req.params.id.

удалите : из URL /api/stuff/:5d9834968e23a32580a1751b и отправьте с этим URL /api/stuff/5d9834968e23a32580a1751b

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