Asa*_*har 1 express sequelize.js
这是我的 admin_pages.js 文件,我已经完成了迁移和模型,但出现此错误。
类型错误:无法读取 C:\users\gaffer\desktop\gaffercart\routes\admin_pages.js:80:21 at Layer.handle [as handle_request] (C:\users\gaffer\desktop\gaffercart) 的未定义属性“findOne” \node_modules\express\lib\router\layer.js:95:5) 在下一个 (C:\users\gaffer\desktop\gaffercart\node_modules\express\lib\router\route.js:137:13) 在 Route。在 Layer.handle [as handle_request] (C:\users\gaffer\desktop\gaffercart\node_modules\express\lib\router\route.js:112:3) (C:\users\gaffer\desktop\gaffercart\node_modules\express\lib\router\route.js:112:3) \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) at 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 at 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 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) 在 C:\users\gaffer\desktop\gaffercart\node_modules\connect-flash\lib\flash.js:21:5\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\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:510) 在 C:\users\gaffer\desktop\gaffercart\node_modules\connect-flash\lib\flash.js:21:510) 在 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;
Run Code Online (Sandbox Code Playgroud)
这是我的页面模型
'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;
};
Run Code Online (Sandbox Code Playgroud)
您已将 Page 模型定义为'page'(小写):
var page = sequelize.define('page', {...})
Run Code Online (Sandbox Code Playgroud)
但是将其用作:
models.Page.findOne(...) // uppercase
Run Code Online (Sandbox Code Playgroud)
使用models.page或更改您的模型定义为大写:
var page = sequelize.define('Page', {...}) // uppercase
Run Code Online (Sandbox Code Playgroud)
也改变这个:
//Get Page model
const Page = require('../models/page');
Run Code Online (Sandbox Code Playgroud)
对此:
const Page = require('../models').Page // or .page if you keep your definition lowercase
Run Code Online (Sandbox Code Playgroud)
findOne不带函数回调,你必须用属性where来搜索slug。使用以下内容:
else {
models.Page.findOne({
where: { slug } // destructuring
})
.then((page) => {
// work with the page instance
})
.catch((err) => {
// error case
})
}
Run Code Online (Sandbox Code Playgroud)
与page.save():
page.save()
.then(() => {
req.flash('success','Page Added Successfully!!');
res.redirect('/admin/pages');
})
.catch((err) => {
// handle error
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7008 次 |
| 最近记录: |