我创建了一个数据库,并使用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
感谢您的帮助。