Как я могу получить правильный объект из базы данных через идентификатор, указанный на mongoDB? - PullRequest
1 голос
/ 12 февраля 2020

У меня есть ссылка примерно так:

const SpotIndexItem = ({ spot }) => (
  <Link to={`/spots/${spot._id}`}>
    <li>
      <p>Put image here</p>
      <p>{spot.name}</p>
    </li>
  </Link>
);

И она ведет на страницу сведений об элементе индекса. В компоненте контейнера на странице сведений у меня есть это:

const mapStateToProps = (state, ownProps) => ({
  spot: state.entities.spots[ownProps.match.params.spotId] 
});

И я отображаю компонент сведений об элементе, как в моем файле app.js:

<Route exact path="/spots/:spotId" component={SpotDetail} />

И это в моем маршруте / api / spot. js file:

router.get('/:id', (req, res) => {
  Spot.findById(req.params.id)
    .then(spot => res.json(spot))
    .catch(err =>
      res.status(404).json({ nospotfound: 'No spot found with that ID' })
    );
});

Но я продолжаю получать это сообщение об ошибке:

Ошибки вывода:

enter image description here

Есть ли способ сделать это с spot._id? Существуют ли какие-либо встроенные find методы, которые я мог бы использовать здесь, чтобы получить объект с указанием c _id?

ОБНОВЛЕНИЕ:

  • Из любопытства я также попробовал эти маршруты в Почтальоне, и индексный маршрут работает отлично. Однако, когда я пытаюсь сделать маршрут, подобный этому: localhost:5000/api/spots/5e4317871c9d440000b1613f, я получаю null вместо объекта.
  • Я также нашел этот пост: mon goose 'findById 'возвращает ноль с действительным идентификатором , что решило проблему путем подключения к нужной базе данных. Я новичок в mongoDB, но я уверен, что правильно настроил свою базу данных. Мое приложение подключено к базе данных test (у меня пока нет возможности добавлять изображения, но вот ссылка на то, как выглядит моя база данных):

    введите описание изображения здесь

...