javascript - 我可以为每个不工作的车把做些什么?
问题描述
(node:10148) UnhandledPromiseRejectionWarning: TypeError: req.render is not a function at E:\desktop\Node.js learn project\node.jsBlog\nodejsBlogProject\routes\main.js:12:13 at processTicksAndRejections (internal/process/ task_queues.js:93:5)(node --trace-warnings ...
用于显示警告的创建位置)(节点:10148)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 id:1)(节点:10148)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
主.js;
const express = require('express')
const router = express.Router()
const Post = require('../models/Post')
router.get('/', (req, res) => {
res.render('site/index')
})
router.get('/blog', (req, res) => {
Post.find({}).then(posts => {
req.render('site/blog', {posts:Post})
});
res.render('site/blog');
});
router.get('/contact', (req, res) => {
res.render('site/contact')
})
router.get('/about', (req, res) => {
res.render('site/about')
})
router.get('/login', (req, res) => {
res.render('site/login')
})
router.get('/register', (req, res) => {
res.render('site/register')
})
module.exports = router
应用程序.js;
const path = require('path')
const express = require('express')
const exphbs = require('express-handlebars')
const app = express()
const port = 3000
const hostname = '127.0.0.1'
const mongoose = require('mongoose')
const bodyParser = require('body-parser')
mongoose.connect('mongodb://127.0.0.1/nodeblog_db', {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true
});
app.use(express.static('assets'))
app.engine('handlebars', exphbs())
app.set('view engine', 'handlebars')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
const main = require('./routes/main')
const posts = require('./routes/posts')
app.use('/', main)
app.use('/posts', posts)
app.listen(port , hostname, () => {
console.log(`server working now, http://${hostname}:${port}/`)
})
帖子.js;
const express = require('express')
const router = express.Router()
const Post = require('../models/Post')
router.get('/new', (req, res) => {
res.render('site/addPost')
})
router.post('/test', (req, res) => {
console.log(req.body);
Post.create(req.body)
res.redirect('/')
})
module.exports = router
Post.js;
const mongoose = require('mongoose');
const PostSchema = new mongoose.Schema({
title: { type: String, require:true},
content: { type: String, require: true},
date: { type: Date , default: Date.now}
})
module.exports = mongoose.model('Post', PostSchema)
我正在使用 mongodb 作为数据库。当我尝试使用 blog.handlebars 中的每个命令时出现此错误。
解决方案
在这条线上:
req.render('site/blog', {posts:Post})
你req
在应该写的时候写res
。您传递给的值posts
也不正确,您正在传递Post
模型,但应该使用posts
从回调中获得的值。最后,您可能会调用res.render
两次,一次在回调函数中,然后第二次。在失败的情况下调用它更有意义,例如数据库调用失败。
放在一起它可能看起来像这样:
router.get('/blog', (req, res) => {
Post.find({}).then(posts => {
res.render('site/blog', { posts: posts });
}).catch(err => {
console.log(err);
res.render('site/blog');
});
});
推荐阅读
- python - 条件多元 KDE 有多个最大值和最小值
- powershell - PowerShell 错误记录的“InvocationInfo”为空/不正确
- json - 如何将文本节点转换为对象节点以添加子节点
- java - 使用 Logger.getGlobal() 与 tomcat9 和 org.apache.logging.log4j.jul.LogManager - log4j 配置被忽略
- c++ - 代码块中的 CPP graphics.h
- python - 如何使用 Python 的 smpplib 同时向多个号码发送短信
- ms-access - 在 Access 中插入“日”列
- date - 在雪花中,如何将一种日期格式转换为另一种格式。从 YYYYMMDD 到 YYYY-MON-DD
- c++ - 如何使用 CMake 无缝构建?
- node.js - 如何使用来自不同 Node.js 的 Mongoose 获取聚合搜索值?