Typeorm实体方法不出现

问题描述 投票:0回答:2

我已经使用“ts-node”配置了简单的自定义应用程序,并且作为一个 ORM,我尝试配置(按照文档说明)typeorm。所以发生了一件奇怪的事情,编辑器看不到实体的任何方法。

实际错误如下所示:Entity.findOne 方法在“typeof Entity”中不存在。

在 tsconfig.json experimentalDecoratorsemitDecoratorMetadata 已启用

reflect-metadata模块已导入index.ts中,

希望有人能给我一些好的信息,谢谢!

这是一些代码片段

tsconfig.jsos

"experimentalDecorators": true,                      
"emitDecoratorMetadata": true,        

数据库/index.ts

import "reflect-metadata";
import { DataSource } from "typeorm";
import { User } from "./entities";

const AppDataSource = new DataSource({
  type: "sqlite",
  database: "./database.db",
  synchronize: true,
  logging: true,
  entities: [User],
  subscribers: [],
  migrations: [],
});

AppDataSource.initialize()
  .then(() => {
    // here you can start to work with your database
  })
  .catch((error) => console.log(error));

实体/user.ts

import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn } from "typeorm"

@Entity()
export class User {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    telegram_id: string

    @Column()
    nickname: string

    @CreateDateColumn()
    public created_at: Date;

    @UpdateDateColumn()
    public updated_at: Date;
}

User.findOne //findOne doesn't exists [[PROBLEM AT THIS LINE]]

enter image description here

javascript typescript orm backend typeorm
2个回答
0
投票

您需要扩展 BaseEntity:

export class User extends BaseEntity {

(并将 BaseEntity 添加到您的 typeorm 导入中)


0
投票

您可以为数据库请求使用单独的存储库类

@Injectable()
export class UserRepository extends BaseRepository<User> {
  constructor(public dataSource: DataSource) {
    super(User, dataSource.createEntityManager())
  }

const userRepository = new UserRepository(dataSource)
userRepository.find

现在许多项目都使用服务存储库模式,其中服务负责业务逻辑、计算等,存储库负责对数据库的请求

© www.soinside.com 2019 - 2024. All rights reserved.