这是我的admin_pages.js文件,我已经完成了迁移和模型,但是我收到了这个错误。
TypeError:无法读取未定义的属性“findOne” 在C:\ users \ gaffer \ desktop \ gaffercart \ routes \ admin_pages.js:80:21 在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 \ route.js:137:13) 在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 在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 \ node_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) 在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 \ 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 \ 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 \ node_modules \ connect-flash \ 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;
这是我的页面模型
'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;
};
答案 0 :(得分: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
不接受函数回调,您必须使用where
按slug
属性进行搜索。使用以下内容:
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
})