Express 无法读取节点和Sequelize中未定义的属性“findOne”

Express 无法读取节点和Sequelize中未定义的属性“findOne”,express,sequelize.js,Express,Sequelize.js,这是我的admin_pages.js文件,我已经完成了迁移和建模,但是我遇到了这个错误 TypeError:无法读取未定义的属性“findOne” 在C:\users\gaffer\desktop\gaffercart\routes\admin\u pages.js:80:21 在Layer.handle[as handle\u request]C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\Layer.j

这是我的admin_pages.js文件,我已经完成了迁移和建模,但是我遇到了这个错误

TypeError:无法读取未定义的属性“findOne” 在C:\users\gaffer\desktop\gaffercart\routes\admin\u pages.js:80:21 在Layer.handle[as handle\u request]C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\Layer.js:95:5 在下一个C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\route.js:137:13 在Route.dispatch C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\Route.js:112:3 在Layer.handle[as handle\u request]C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\Layer.js:95:5 在C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:281:22 在Function.process_参数C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:335:12 在下一个C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:275:10 在Function.handle C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:174:3 在路由器C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:47:12 在Layer.handle[as handle\u request]C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\Layer.js:95:5 在trim_前缀C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:317:13 在C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:284:7 在Function.process_参数C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:335:12 在下一个C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:275:10 在C:\users\gaffer\desktop\gaffercart\index.js:70:3 在Layer.handle[as handle\u request]C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\Layer.js:95:5 在trim_前缀C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:317:13 在C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:284:7 在Function.process_参数C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:335:12 在下一个C:\users\gaffer\desktop\gaffercart\node\u modules\express\lib\router\index.js:275:10 在C:\users\gaffer\desktop\gaffercart\node\u modules\connect flash\lib\flash.js:21:5

这是我的网页模型

'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;
};

您已将页面模型定义为小写的“页面”:

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不接受函数回调,您必须通过slug属性使用where进行搜索。使用以下命令:

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

}
与page.save相同:


您已将页面模型定义为小写的“页面”:

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不接受函数回调,您必须通过slug属性使用where进行搜索。使用以下命令:

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

}
与page.save相同:


我现在收到了这个错误,朋友,你就在上面,我花了一周时间才找到这个续集警告:模型属性slug传递到模型页面的finder方法选项中,但是options.where对象是空的。你忘记使用选项了吗?在哪里?执行默认:从页面中选择id、标题、slug、内容、排序、createdAt、updatedAt作为页面限制1;你能帮我处理一下这个models.Page.findOne{slug:slug},函数err,Page{if Page吗{use where and findOne不接受函数回调,它返回一个承诺,因此您必须使用then或async/await。我更新了我的答案。请参见那里的示例。您能告诉我如何解决这个问题吗?在我的情况下,我现在遇到了这个错误,朋友,您就在上面。我花了一周时间找到这个续集警告:模型属性slug传递到finder中模型页面的方法选项,但选项.where对象为空。您是否忘记使用选项.where?执行默认设置:从页面中选择id、标题、slug、内容、排序、createdAt、updatedAt作为页面限制1;您是否可以帮我处理此模型。Page.findOne{slug:slug},函数err,Page{if Page{use where and findOne不接受函数回调,它返回一个承诺,因此您必须使用then或async/await。我更新了我的答案。请参见那里的示例。在我的情况下,您能告诉我如何使用它吗