我已经使用“ts-node”配置了简单的自定义应用程序,并且作为一个 ORM,我尝试配置(按照文档说明)typeorm。所以发生了一件奇怪的事情,编辑器看不到实体的任何方法。
实际错误如下所示:Entity.findOne 方法在“typeof Entity”中不存在。
在 tsconfig.json experimentalDecorators、emitDecoratorMetadata 已启用
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]]
您需要扩展 BaseEntity:
export class User extends BaseEntity {
(并将 BaseEntity 添加到您的 typeorm 导入中)
您可以为数据库请求使用单独的存储库类
@Injectable()
export class UserRepository extends BaseRepository<User> {
constructor(public dataSource: DataSource) {
super(User, dataSource.createEntityManager())
}
const userRepository = new UserRepository(dataSource)
userRepository.find
现在许多项目都使用服务存储库模式,其中服务负责业务逻辑、计算等,存储库负责对数据库的请求