为什么说它没有功能findAll?

时间:2019-05-03 12:38:18

标签: node.js express sequelize.js

我创建了一个数据库,并使用Sequelize进行了迁移和关联。我可以创建数据库,但是无法创建任何数据。我决定直接使用DBeaver自己放置一些数据,并使用findAll对其进行测试,但是我也得到它不具有findAll函数。当我尝试创建数据时,它说它没有创建函数,而现在,它说它没有findAll。我遵循了另一个教程,它运行完美,但是在我的项目中却没有。

我尝试消除关联,只返回const对象。我试过了代替User.findAll,尝试了User.Sequelize.findAll,或User.sequelize.findAll,也尝试了User.User.findAll(尝试了我能想到的一切,可能是问题所在)。

这是我的用户模型:

const Sequelize = require("sequelize");

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define("User", {
    id_user: {
      type: Sequelize.INTEGER,
      allowNull: false,
      autoIncrement: true,
      primaryKey: true
    },
    name: {
      type: Sequelize.STRING(45),
      allowNull: false
    },
    last_name: {
      type: Sequelize.STRING(45),
      allowNull: false
    },
    email: {
      type: Sequelize.STRING(45),
      allowNull: false
    },
    hashed_password: {
      type: Sequelize.STRING(255),
      allowNull: false
    }
  });

  User.associate = function(models) {
    // Association
    User.hasMany(models.Connection);
    User.hasMany(models.UserHasListenedSong);
  };
  return User;
};

这是我创建实例并调用findAll的地方:

module.exports = async () => {
  const User = require("../models/User");

  const errHandler = err => {
    console.error("Error: ", err);
  };

  const users = await User.findAll({
    where: { username: "Tobi" }
  }).catch(errHandler);

  console.log(JSON.stringify(users));
};

这是我与数据库的连接:

const Sequelize = require("sequelize");

const sequelize = new Sequelize(
  "<my-project-name>",
  "<username>",
  "<password>!",
  {
    host: "127.0.0.1",
    dialect: "mysql",
    operatorsAliases: false
  }
);

module.exports = sequelize;
global.sequelize = sequelize;

这是迁移:

"use strict";

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable("Users", {
      id_user: {
        type: Sequelize.INTEGER,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true
      },
      name: {
        type: Sequelize.STRING(45),
        allowNull: false
      },
      last_name: {
        type: Sequelize.STRING(45),
        allowNull: false
      },
      email: {
        type: Sequelize.STRING(45),
        allowNull: false
      },
      hashed_password: {
        type: Sequelize.STRING(255),
        allowNull: false
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },

  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable("Users");
  }
};

这是app.js代码的一部分:


// DB Connection
require("./src/database/connect");


require("./src/getInfo")();

我尝试了一些教程,他们从数据库返回了数据。例如这个:

https://www.youtube.com/watch?v=pxo7L5nd1gA&t=239s

和这个:

https://www.youtube.com/watch?v=9xJLcTxlEIs&t=1209s

感谢您的帮助。

0 个答案:

没有答案