#node.js #express #mongoose
#node.js #экспресс #mongoose
Вопрос:
Я только что закончил bootcamp веб-разработчика Colt Steele и начал создавать свое собственное приложение.
Мой вопрос заключается в использовании MongoDB, Express и Node, я вижу, что созданные URL-адреса похожиhttp://localhost/category/122398753984 где число — это номер MongoDB _id.
Возможно ли закодировать таким образом, чтобы использовать название категории? Например http://localhost/category/finance где вместо значения идентификатора отображается название категории. Если это возможно, как мне также справиться с конфликтующими именами, например, кто-то также вводит в finance название категории. Спасибо
Ответ №1:
конечно, вы можете просто добавить новое поле в свою модель категории.
category: {
_id: ObjectId,
name: "Finance",
slug: "finance"
}
Теперь, когда вы создаете маршрут:
router.get('/category/:slug', function(req, res) {
const slug = req.params.slug;
const category = // query database using slug value.
return res.json(category);
})
Комментарии:
1. Спасибо! Есть ли способ предотвратить дублирование пуль?
2. Да, вы можете добавить уникальный индекс в поле slug в схеме mongoose. также перед вставкой новой категории выполните поиск существующей категории с недавно вставленным slug, если есть категория с таким же, затем верните пользователю сообщение об ошибке.