在定义了一个模型之后,我找不到任何关于必须使用sequelize-typescript. ()的地方,我认为我做错了什么,或者我必须使用sequelize而不是Model.init来完成它在代码中,im试图使用类转换器(以及失败的xd),所以只需忽略它。所以,后缀会抱怨我的模型没有定义,为了解决这个问题,我把Model.init()放在上面,我做的是正确的吗?
import { DataTypes } from 'sequelize';
import sequelize from '@shared/infra/sequelize/index';
import { Table, Model, Column } from 'sequelize-typescript';
import { Exclude } from 'class-transformer';
@Table({ tableName: 'acesso_api' })
export default class User extends Model {
@Column({ primaryKey: true })
id: number;
@Column
nome: string;
@Column
@Exclude()
password: string;
@Column
@Exclude()
password_hash: string;
@Column
cliente: string;
@Column({ defaultValue: 0 })
@Exclude()
admin: number;
}
User.init(
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
nome: {
type: DataTypes.STRING(45),
},
password: {
type: DataTypes.STRING(45),
},
password_hash: {
type: DataTypes.STRING(100),
},
cliente: {
type: DataTypes.STRING(45),
},
admin: {
type: DataTypes.INTEGER(),
defaultValue: 0,
},
},
{
tableName: 'acesso_api',
sequelize,
},
);顺便说一句,我的默认连接就是这样解决的(是的,在找到模型时没有任何问题):
import { Sequelize } from 'sequelize-typescript';
export default new Sequelize({
dialect: 'mysql',
host: process.env.HOST,
username: process.env.POLO_USERNAME,
password: process.env.PASSWORD,
database: 'some_DB',
repositoryMode: true,
models: [`${__dirname}./src/modules/**/infra/sequelize/entities/*.ts`],
port: 3306,
define: {
timestamps: false,
underscored: true,
freezeTableName: true,
},
});这是给我的错误消息,如果我没有Model.init()它(注入消息是因为注射器,所以忽略它):
Server started at port 8080
Error: Cannot inject the dependency "userRepository" at position #0 of "AuthenticateUserService" constructor. Reason:
User has not been defined
at /home/leandro/Documents/Projetos/api/node_modules/tsyringe/dist/cjs/dependency-container.js:290:23
at Array.map (<anonymous>)
at InternalDependencyContainer.construct (/home/leandro/Documents/Projetos/api/node_modules/tsyringe/dist/cjs/dependency-container.js:266:34)
at InternalDependencyContainer.resolve (/home/leandro/Documents/Projetos/api/node_modules/tsyringe/dist/cjs/dependency-container.js:105:33)
at /home/leandro/Documents/Projetos/api/src/modules/users/infra/http/controllers/SessionController.ts:10:37
at Generator.next (<anonymous>)
at /home/leandro/Documents/Projetos/api/src/modules/users/infra/http/controllers/SessionController.ts:8:71
at new Promise (<anonymous>)
at __awaiter (/home/leandro/Documents/Projetos/api/src/modules/users/infra/http/controllers/SessionController.ts:4:12)
at create (/home/leandro/Documents/Projetos/api/src/modules/users/infra/http/controllers/SessionController.ts:20:16)
[INFO] 10:43:09 Restarting: /home/leandro/Documents/Projetos/api/src/shared/infra/sequelize/index.ts has been modified
Debugger listening on ws://127.0.0.1:9229/d1020fa3-ae78-4f6c-ae7f-2374628c237b
For help, see: https://nodejs.org/en/docs/inspector发布于 2021-02-19 11:49:46
我想我想出来了,就像那样。“后缀-类型记录”不会自动插入您创建的模型,因此您必须手动创建,这实际上是好的,因为您可以选择什么时候要插入它。目前,我正在开发一个需要多个数据库连接的应用程序,并且可以在任何时候输入模型,这只是为我节省了时间。
https://stackoverflow.com/questions/66261773
复制相似问题