Javascript findAll()不是sequelize中的函数

Javascript findAll()不是sequelize中的函数,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我正在将Express.js与sequelize一起使用 我试图从表中获取数据,但findALL方法不起作用 在这里,我正在共享我的模型和控制器文件 检验产品模型 产品属性模型 models/index.js文件 控制器 我一直在从checkout_product获取数据&它是子模型product_属性模型, 每次我都会遇到相同的错误:TypeError:Checkout\u product.findAll不是一个函数const Checkout\u product=require'../mod

我正在将Express.js与sequelize一起使用 我试图从表中获取数据,但findALL方法不起作用

在这里,我正在共享我的模型和控制器文件

检验产品模型

产品属性模型

models/index.js文件

控制器

我一直在从checkout_product获取数据&它是子模型product_属性模型,
每次我都会遇到相同的错误:TypeError:Checkout\u product.findAll不是一个函数

const Checkout\u product=require'../models'.table\u name;
您可以试试吗

您正在使用Sequelize的旧方法来初始化模型。我们提供并建议了使用require和extends的更新方法。有关更多信息,请查看

关于你的代码

您既没有正确初始化数据库结构,也没有在以后正确使用它

首先在index.js中输入代码:

.forEachfunctionfile{ 让model=requirepath.join\uu dirname,文件; db[model.name]=模型; }; 只需在db对象中加载模型文件。但这些文件是以sequelize对象作为参数调用的函数。这是通过将它们提供给sequelize.import来完成的,后者管理对已定义模型函数的正确调用以创建模型实例。检查

同样,在成功初始化db之后,在控制器代码中,require“../models”返回总db对象。因此,如果您想在您的案例中使用特定模型作为签出产品,您必须在对象中访问它:

const db=需要“../models”; db.Checkout\u product.findAll。。。
我使用sequlize.import方法fs.readdirSync_uudirname.filterfunctionfile{return file.indexOf'.!==0&&file!==basename&&file.slice-3==='.js';}.forEachfunctionfile{var model=sequelize[import]path.join_udirname,file;db[model.name]=model;};现在,我得到了这个错误:返回文件.indexOf'.!==0&&file!==basename&&file.slice-3==='.js';ReferenceError:basename未定义我无法理解您的代码段,basename未在任何地方初始化,因此说undefined是正确的
module.exports = function (sequelize, DataTypes) {
    var Checkout_product = sequelize.define(
        "Checkout_products",
        {
            name: {
                type: DataTypes.STRING
            },
            ptice: {
                type: DataTypes.STRING
            },
            image: {
                type: DataTypes.STRING
            },
            quantity: {
                type: DataTypes.INTEGER
            },
        },
    );

   Checkout_product.associate = function (models) {
        Checkout_product.hasMany(models.Product_attribute, {
            foreignKey: "product_id",
            sourceKey: "id"
        });
    };

    return Checkout_product;
};

module.exports = function (sequelize, DataTypes) {
    var Product_attribute = sequelize.define(
        "product_attributes",
       {
            product_id: {
                type: DataTypes.INTEGER
            },
            attribute_name: {
                type: DataTypes.STRING
            },
            attribute: {
                type: DataTypes.STRING
            },
            price: {
                type: DataTypes.STRING
            },
        },
    );

     Product_attribute.associate = (models) => {
        Product_attribute.belongsTo(models.Checkout_product, {
            foreignKey: "product_id",
            sourceKey: "id"
        });
    };

    return Product_attribute;
};



"use strict";

const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
const config = require("./../config/development").database;

let sequelize = new Sequelize(
  config.database,
  config.username,
  config.password,
  config
);
let db = {};

fs
  .readdirSync(__dirname)
  .filter(function(file) {
    return file.indexOf(".") !== 0 && file !== "index.js";
  })
  .forEach(function(file) {
    let model = require(path.join(__dirname, file));
    db[model.name] = model;
  });
Object.keys(db).forEach(function(modelName) {
  if ("associate" in db[modelName]) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;
const Checkout_product  = require('../models');

module.exports.checkout_product_get = function (req, res) {
  Checkout_product.findAll({
     include: [ {
       model : Product_attributes,
     }]
  })
  .then(checkout_product => {
        res.json(checkout_product)
  })
}