node.js - NodeJs 路由不渲染
问题描述
我正在构建一个 Express 应用程序并遇到一些路由问题。这是我的 routes.js
const EDIT_VIDEO = "/edit";
const routes = {
editVideo: (id) => {
if (id) {
return `videos/${id}/edit`;
} else {
return EDIT_VIDEO;
}
},
deleteVideo: DELETE_VIDEO,
};
export default routes;
这是我的视频控制器:
import Video from "../models/Video";
import routes from "../routes";
export const getEditVideo = async (req, res) => {
const {
params: { id },
} = req;
try
const video = await Video.findById(id);
res.render("editVideo", { pageTitle: `Edit ${video.title}`, video });
} catch (error) {
console.log(error);
res.redirect(routes.home);
}
};
export const postEditVideo = (req, res) => {};
这是我的视频路由器:
import express from "express";
import routes from "../routes";
import {
getEditVideo,
postEditVideo,
} from "../controllers/videoController";
const videoRouter = express.Router();
/*------Video Routes------*/
//Edit
videoRouter.get(routes.editVideo(), getEditVideo);
videoRouter.post(routes.editVideo(), postEditVideo);
export default videoRouter;
当我转到 'videos/"id"/edit' 时,我在浏览器中看到此错误 - 无法获取 /videos/5ed2a169eb370432c01f5ebd/edit
我在视图目录中有一个名为“editVideo.pug”的哈巴狗模板,但我不知道它为什么不起作用。
解决方案
推荐阅读
- python - 通过保留有关原始索引的信息对 ndarrays 进行排序
- python - open() 和 path.open() 的区别
- angular - 如果表数据已更改则显示按钮,如果更改回默认值则隐藏
- html - 如何在启用触摸的情况下将 css 目标写入 Macbook(Retina 显示屏)
- html - 如何使空的div与空间一一保持?
- azure-cosmosdb - 我们可以在 gremlin 的边缘放置和条件吗
- date - 更改 pl/sql 中的变量值
- ruby-on-rails - 如何在rails中组合两个joins.where
- postgresql - 从表中清理文件而不删除 postgresql 9.6.3 中的行
- ios - 如果编程语言发生变化,如何在 iOS 应用商店中更新应用?