首页 > 解决方案 > 投掷者;// 未处理的 'error' 事件 ^ TypeError: Cannot read property 'title' of null

问题描述

[nodemon] 开始node app.js

(节点:11472)DeprecationWarning:open()在 mongoose >= 4.11.0 中已弃用,请改用,或者如果使用或openUri()设置useMongoClient选项。请参阅 http://mongoosejs.com/docs/4.x/docs/connections.html#use-mongo-client (node:11472) DeprecationWarning: Mongoose: mpromise (mongoose 的默认承诺库) 已被弃用,插入你自己的承诺库代替:http ://mongoosejs.com/docs/promises.html 服务器在端口 3000 上启动连接到 MongoDB events.js:287 throw er; // 未处理的“错误”事件 ^connect()createConnection()

TypeError:无法在 C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\routes\pages.js:17:25 在 model.Query 读取属性“标题”。(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) 在函数实例上发出“错误”事件:在 model.Query。(C:\Users\user\desktop\current\Nodejs-Course-file-master\cmscart\node_modules\mongoose\lib\model.js:4095:13) 在 C:

代码如下:

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;

标签: javascriptnode.jsexpressmongooseejs

解决方案


'/' 路由是否出现该错误?
如果是这样,您的 mongo 查询似乎找不到任何合适的文档。
仅当找到页面时才需要呈现:

router.get('/', function (req, res) {

    Page.findOne({slug: 'home'}, function (err, page) {
        if (err)
            return console.log(err);

        if (!page) 
            return console.log("No page found"); // DO WHAT YOU WANT

        res.render('index', {
            title: page.title,
            content: page.content
        });
    });

});

推荐阅读