【发布时间】:2020-08-16 08:09:39
【问题描述】:
[nodemon] 开始 node app.js
(node:11472) DeprecationWarning:
open()在猫鼬中被弃用 >= 4.11.0,请改用openUri(),或者如果使用connect()或createConnection(),则设置useMongoClient选项。看 http://mongoosejs.com/docs/4.x/docs/connections.html#use-mongo-client (节点:11472)弃用警告:猫鼬:承诺(猫鼬的 默认承诺库)已弃用,插入您自己的承诺 图书馆代替:http://mongoosejs.com/docs/promises.html 服务器 开始于端口 3000 连接到 MongoDB events.js:287 投掷者; // 未处理的“错误”事件 ^TypeError:无法读取 null 的属性“标题” 在 C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\routes\pages.js:17:25 在模型.查询。 (C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\mongoose\lib\model.js:4093:16) 在 C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\kareem\index.js:273:21 在 C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\kareem\index.js:131:16 在 processTicksAndRejections (internal/process/task_queues.js:79:11) 上发出“错误”事件 函数实例位于: 在模型.查询。 (C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\mongoose\lib\model.js:4095:13) 在 C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\kareem\index.js:273:21 在 C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\kareem\index.js:131:16 在 processTicksAndRejections (internal/process/task_queues.js:79:11)
代码如下:
var express = require('express');
var router = express.Router();
// Get Page model
var Page = require('../models/page');
//GET request
router.get('/', function(req, res) {
Page.findOne({
slug: 'home'
}, function(err, page) {
if (err)
console.log(err);
res.render('index', {
title: page.title,
content: page.content
});
});
});
//GET request
router.get('/:slug', function(req, res) {
var slug = req.params.slug;
Page.findOne({
slug: slug
}, function(err, page) {
if (err)
console.log(err);
if (!page) {
res.redirect('/');
} else {
res.render('index', {
title: page.title,
content: page.content
});
}
});
});
// Exports
module.exports = router;
【问题讨论】:
-
您能否确保您的所有代码或控制台输出都在代码块中并以可读方式格式化?还请具体说明您想问的问题。
-
错误基本上说第 17 行的
page是undefined。您在第 14-15 行的 if 语句只是将错误记录到控制台,我们看不到。有时,当 DB 中没有特定键的任何内容时,DB 客户端不会返回错误,而是返回空对象,或者可能是undefined(我这辈子没见过)...在行前尝试console.log(page)17 看看你实际拥有的page对象。 -
在
:slug下一个抛出错误的处理程序中,您有if (!page) { res.redirect('/'); }。我建议您在第一个处理程序中使用相同的方法。
标签: javascript node.js express mongoose ejs