【问题标题】:Sequelize:: findAll is not a functionSequelize::findAll 不是函数
【发布时间】:2020-04-08 14:00:57
【问题描述】:

以下是我的 js 文件。 我从模型中返回了一个对象,然后尝试将它导入我的控制器 js 文件。但它向我抛出了 admin_user.findAll 不是函数的错误。

helloController.js

var DataTypes = require("sequelize/lib/data-types");
const dbconconfig = require("../dbseq.config.js").db;
var admin_users = require("../models/admin_users");
var admin_roles = require("../models/admin_roles");
const logger = require("tracer").colorConsole();
admin_roles = new sequelize(dbconconfig);
admin_users = new sequelize(dbconconfig);


async sendDB(req, res) {
    logger.info("db called");
    admin_users
      .findAll({
        include: [{ model: admin_roles }]
      })
      .then(admin_users => {
        const resObj = admin_users.map(admin_users => {
          return Object.assign(
            {}

Admin_user.js - 返回类型为 admin_users (sequelize, DataTypes)

> admin_users.js



    module.exports = function(sequelize, DataTypes) {
  const admin_users = sequelize.define(
    "adminUsers",
    {
      id: {
        type: DataTypes.INTEGER(22),
        allowNull: false,
        primaryKey: true,
        autoIncrement: true,
        field: "id"
      },
      countryCode: {
        type: DataTypes.STRING(10),
        allowNull: true,
        defaultValue: "+91",
        field: "country_code"
      },
      mobileNo: {
        type: DataTypes.STRING(20),
        allowNull: false,
        field: "mobile_no"
      },
      email: {
        type: DataTypes.STRING(128),
        allowNull: true,
        field: "email"
      },
      firstName: {
        type: DataTypes.STRING(128),
        allowNull: true,
        field: "first_name"
      },
      lastName: {
        type: DataTypes.STRING(128),
        allowNull: true,
        field: "last_name"
      },
      lockVersion: {
        type: DataTypes.INTEGER(11),
        allowNull: true,
        defaultValue: "0",
        field: "lock_version"
      },
      blocked: {
        type: DataTypes.INTEGER(1),
        allowNull: true,
        defaultValue: "0",
        field: "blocked"
      },
      deleted: {
        type: DataTypes.INTEGER(1),
        allowNull: true,
        defaultValue: "0",
        field: "deleted"
      },
      createdAt: {
        type: DataTypes.DATE,
        allowNull: false,
        defaultValue: sequelize.literal("CURRENT_TIMESTAMP"),
        field: "created_at"
      },
      updatedAt: {
        type: DataTypes.DATE,
        allowNull: false,
        defaultValue: sequelize.literal("CURRENT_TIMESTAMP"),
        field: "updated_at"
      },
      password: {
        type: DataTypes.STRING(128),
        allowNull: false,
        field: "password"
      },
      role: {
        type: DataTypes.STRING(128),
        allowNull: true,
        field: "role"
      }
    },
    {
      tableName: "admin_users"
    }
  );

  adminUser.associate = models => {
    adminUser.belongsTo(models.adminRoles, {
      foreignKey: "id"
    });
  };
  return admin_users;
};

我无法弄清楚为什么它无法找到 findAll 函数 续集中定义。

我尝试了其他方法来导入模型,但似乎没有任何效果。

如果我应该添加更多信息/代码以使这个问题易于理解,请告诉我。

【问题讨论】:

  • 应该是 db.admin_users .findAll({ include: [{ model: admin_roles }] })。
  • 添加 db.admin_users。
  • 你好 Prabhjot,添加 db 给我错误 - UnhandledPromiseRejectionWarning: ReferenceError: db is not defined。这是因为我没有使用 index.js 文件。我直接导入模块。

标签: javascript node.js sequelize.js


【解决方案1】:

以下行的工作方式存在相关问题:

const dbconconfig = require("../dbseq.config.js").db;
var admin_users = require("../models/admin_users");
var admin_roles = require("../models/admin_roles");
admin_roles = new sequelize(dbconconfig);//You cannot have new sequelize
admin_users = new sequelize(dbconconfig);

请参考您的 postgres 设置流程: https://www.npmjs.com/package/sequelize-cli

这种方式的实现更加简洁且易于维护

【讨论】:

  • 一旦你全局安装了 cli 并在项目根目录中执行 sequelize init,将创建所需的文件并可以使用 cli 命令创建新的模态
猜你喜欢
  • 2017-04-24
  • 2019-11-17
  • 2021-03-21
  • 2018-07-09
  • 2023-03-06
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 2020-10-07
相关资源
最近更新 更多