Это может быть не полный ответ, но вот что-то вроде того, что вы ищете.
- Убедитесь, что мы принимаем любые пули на маршруте
- Я используется функция asyn c для ожидания результатов из БД
- Отображает представление индекса (если слаг был найден) или отвечает 404, если в таблице не было найдено записей
Предупреждение, я не использовал keystone JS или этот пакет knex js, поэтому он может быть не на 100% правильным, но должен быть хорошим примером того, чего мы пытаемся достичь. Я предполагаю, что knex js отклоняет обещание, если результаты не найдены, но я не уверен.
express.get(`/:slug`, async function (req, res) {
try {
const result = await knex('Link')
.where({ slug: req.params.slug })
.select('id');
return res.render('index');
} catch {
return res.status(404).send({ message: "Not found" });
}
});
Если вы используете старую версию Node.js, вот версия без асинхронный c.
express.get(`/:slug`, function (req, res) {
knex('Link')
.where({ slug: req.params.slug })
.select('id')
.then((result) => {
return res.render('index');
})
.catch(() => {
return res.status(404).send({ message: "Not found" });
});
});