首页 > 解决方案 > TypeError:无法读取 null 的属性“findById”

问题描述

一切正常,除非我提交编辑页面。似乎找不到 ID。请帮助查看下面的代码,看看有什么问题:错误消息附在下面链接中嵌入的图片中:我已正确设置所有页面:

错误信息如下图所示: 照片


代码:

//POST Edit page

router.post('/edit-page/:slug', function(req, res) {
  req.checkBody('title', 'Title must have a vlaue.').notEmpty();
  req.checkBody('content', 'Content must have a value.').notEmpty();

  var title = req.body.title;
  var slug = req.body.slug.replace(/\s+/g, '-').toLowerCase();
  if (slug == "") slug = title.replace(/\s+/g, '-').toLowerCase();

  var content = req.body.content;
  var id = req.body.id;
  var errors = req.validationErrors();

  if (errors) {
    res.render('admin/edit_page', {
      errors: errors,
      title: title,
      slug: slug,
      content: content,
      id: id

    });
  } else {
    Page.findOne({
      slug: slug,
      _id: {
        '$ne': id
      }
    }, function(err, page) {
      if (page) {
        req.flash('danger', 'Page slug exists, choose another.');
        res.render('admin/edit_page', {
          title: title,
          slug: slug,
          content: content,
          id: id

        });

      } else {
        console.log("I am this far...")
        page.findById(id, function(err, page) {

          if (err)
            console.log("How about here?");
          return console.log(err);
          page.title = title;
          page.slug = slug;
          page.content = content;

          page.save(function(err) {
            if (err)
              return console.log(err);
            req.flash('success', 'Page added!');
            res.redirect('/admin/pages/edit-page/' + page.slug);

          });
        });


      }

    });

  }


});

标签: node.jsexpressmongodb-query

解决方案


  • 这是一个错字。使用Page.findById代替page.findById
  • 也是因为它page在声明中undefinedelseif(page)

推荐阅读