Возвращайте только один объект вместо массива в СЛЕДУЮЩЕМ.JS и MongoDB

#javascript #reactjs #mongodb #express #next.js

Вопрос:

Как я могу вернуть один объект для вместо массива? Поскольку я запрашиваю в api только для одного «События», я использую MongoDB Next.js

Я всегда получаю

[{}]

я просто хочу, чтобы это получилось

{}

 const fetchWithId = (url: RequestInfo) => fetch(url).then((r) => r.json());

const index = () => {
  const router = useRouter();

  const { data, error } = useSWR(
    `http://localhost:3000/api/events/event?slug=${router.query.slug}`,
    fetchWithId
  ); 

 

Вот следующий API

 const handler = async (req: NextApiRequest, res: NextApiResponse) => {
  const {
    method,
     query: { slug},
  } = req;

  if (req.method !== 'GET') {
    return;
  }



  await dbConnect();

  const selectedEvent = await Events.find({
    slug: slug,
  });

  res.status(200).json(selectedEvent);
};



export default handler;

 

Комментарии:

1. Короткий ответ: res.status(200).json(selectedEvent[0])

2. Короткий, простой и правильный ответ. Спасибо, Лукас… Я думал, что здесь есть какая-то функция от мангуста..

Ответ №1:

Вы хотели бы вызвать метод .findOne (), а не .find():

 const selectedEvent = await Events.findOne({
    slug: slug
});
 

Комментарии:

1. Спасибо code_monk, это именно то, что я искал…