#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, это именно то, что я искал…