首页 文章

无法在Node和Sequelize中读取未定义的属性'findOne'

提问于
浏览
0

这是我的admin_pages.js文件,我已完成迁移和模型,但我收到此错误 .

TypeError:无法在C:\ users \ gaffer \ desktop \ gaffercart \ routes \ admin_pages.js:80:21在Layer.handle [as handle_request](C:\ users \ gaffer \ desktop \)中读取未定义的属性'findOne' gaffercart \ node_modules \ express \ lib \ router \ layer.js:95:5)at Route(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ route.js:137:13)at Route .dispatch(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ route.js:112:3)在Layer.handle [as handle_request](C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ layer.js:95:5)在C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:281:22 at Function.process_params(C:接下来是\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:335:12)(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js :275:10)在路由器的Function.handle(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:174:3)中(C:\ users \ gaffer \ desktop \ gaffercart) \节点_modules \ express \ lib \ router \ index.js:47:12)在Layer.handle [as handle_request](C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ layer.js:95: 5)在C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \的trim_prefix(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:317:13) router \ index.js:284:7在Function.process_params(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:335:12)下一步(C:\ users \ gaffer) \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:275:10)在C:\ users \ gaffer \ desktop \ gaffercart \ index.js:70:3在Layer.handle [as handle_request](C :\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ layer.js:95:5)trim_prefix(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index . js:317:13)在C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:284:7在Function.process_params(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules) \表现\ LIB \糅ter \ index.js:335:12)在C:\ users \ gaffer \ desktop \的下一个(C:\ users \ gaffer \ desktop \ gaffercart \ node_modules \ express \ lib \ router \ index.js:275:10) gaffercart \ node_modules \连接闪存\ LIB \ flash.js:21:5

var express=require('express');
var router=express.Router();
var expressValidator = require('express-validator');
var bodyParser=require('body-parser');
var models=require('../models');

// var mysql=require('mysql');
// var Sequelize=require('sequelize');
// var DataTypes=Sequelize.DataTypes;
// var sequelize = exports.sequelize = module.parent.exports.sequelize;
// let sequelize=new Sequelize();

//Get Page model
const Page = require('../models/page');

/*
* GET PAGES INDEX its correct but commiting it
*/

 router.get('/',function(req,res){
 //  Page.find({}).sort({sorting: 1}).exec(function(err,pages){
    res.render('admin/pages',{ 
      //pages:pages
    });
   });
 //});
//  router.get('/admin/dashboard',function(req,res){
//    res.render('admin/dashboard');
//  });


/*
** GET ADD PAGE
*/
 router.get('/add-page',function(req,res){
   var title="";
   var slug="";
   var content="";


   res.render('admin/add_page',{
      title:title,
      slug:slug,
      content:content

   });

 });

//POST ADD page
 router.post('/add-page',function(req,res){
  //  console.log("alsdjlajsi")

  req.checkBody('title','Title must have a body.').notEmpty();
  req.checkBody('content','Content must have a body.').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 errors = req.validationErrors();

  //If there are Errors then define it on the same page
  if(errors){
    res.render('admin/add_page',{
      errors:errors,
      title:title,
      slug:slug,
      content:content
    });
  }
  /*
  * Have use Pages
  */
      else{

        models.Page.findOne({slug:slug}, function(err, page){

        if(page){
          req.flash('danger','Page slug Already Exist,');
          res.render('admin/add_page',{

            title:title,
            slug:slug,
            content:content
          });
        }
        else{
            var page = new Page({
              title:title,
              slug:slug,
              content:content,
              sorting:100
            });
            page.save(function(err){
              if(err) return console.log(err);

              req.flash('success','Page Added Successfully!!');
              res.redirect('/admin/pages');
            });
        }
      });

  }

});
//Exports
module.exports=router;

这是我的Page模型

'use strict';
// var Sequelize=require('sequelize');

module.exports = (sequelize, DataTypes) => {
  var page = sequelize.define('page', {
    title: DataTypes.STRING,
    slug: DataTypes.STRING,
    content: DataTypes.STRING,
    sorting:DataTypes.INTEGER
  }, {});
  page.associate = function(models) {
    // associations can be defined here
  };
  return page;
};

1 回答

  • 1

    您已将页面模型定义为 'page' (小写):

    var page = sequelize.define('page', {...})
    

    但是使用它作为:

    models.Page.findOne(...) // uppercase
    

    使用 models.page 或将模型定义更改为大写:

    var page = sequelize.define('Page', {...}) // uppercase
    

    也改变这个:

    //Get Page model
    const Page = require('../models/page');
    

    对此:

    const Page = require('../models').Page // or .page if you keep your definition lowercase
    

    findOne 不接受函数回调,您必须使用 whereslug 属性进行搜索 . 使用以下内容:

    else { 
      models.Page.findOne({ 
        where: { slug }  // destructuring
      })
      .then((page) => {
        // work with the page instance
      })
      .catch((err) => {
        // error case
      })
    
    }
    

    page.save() 相同:

    page.save()
      .then(() => {
        req.flash('success','Page Added Successfully!!');
        res.redirect('/admin/pages');
      })
      .catch((err) => {
        // handle error
      })
    

相关问题