【问题标题】:NestJS, TypeORM, can't fetch dataNestJS,TypeORM,无法获取数据
【发布时间】:2019-10-01 20:34:53
【问题描述】:

我正在尝试开始使用使用 TypeORM 的 NestJS。

我已连接到数据库。至少我认为我有,因为我遇到了很多错误,并且在对配置进行了足够的调整后,错误消失了,连接似乎成功了。

所以现在我想获取任何数据来开始。

数据库中有一个名为 RESULT_PAGE 的表,所以我只想从中获取任何记录。这是我尝试过的:

result-page.entity.ts

import { Entity, PrimaryColumn, Column } from "typeorm";

@Entity()
export class ResultPage {
    @PrimaryColumn()
    result_page_id: number;

    @Column({ length: 1 })
    approval: string;

    @Column({ length: 1})
    manually_uploaded: string;
}

result-page.controller.ts

import { Controller, Get, Request } from '@nestjs/common';
import { ResultPageService } from './result-page.service';

@Controller('result-page')
export class ResultPageController {
    constructor(
        private resultPageService: ResultPageService
    ) { }
  @Get('get-all')
  getProfile() {
    return this.resultPageService.findAll();
  }
}

result-page.service.ts

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { ResultPage } from './result-page.entity';

@Injectable()
export class ResultPageService {
  constructor(
    @InjectRepository(ResultPage)
    private readonly resultPageRepository: Repository<ResultPage>,
  ) {}

  findAll(): Promise<ResultPage[]> {
    return this.resultPageRepository.find();
  }
}

如果我将服务编辑为如下所示:

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { ResultPage } from './result-page.entity';

@Injectable()
export class ResultPageService {
  constructor(
    @InjectRepository(ResultPage)
    private readonly resultPageRepository: Repository<ResultPage>,
  ) {}

  findAll(): Promise<string> {
    return new Promise((resolve, reject) => { resolve('hello world') })
    // return this.resultPageRepository.find();
  }
}

然后我得到'hello world',所以肯定是RESULT_PAGE表没有连接

在 AppModule 中,我正在加载这样的实体

const typeOrmModuleOptions: TypeOrmModuleOptions = {
  ...
  entities: [__dirname + '/**/*.entity{.ts,.js}'],
  synchronize: true
}

我确信我犯了一些绝对的菜鸟错误,所以如果有人可以在这里帮助我,我将不胜感激。我对数据库和 api 很陌生,所以任何信息都会有很大帮助。 TIA


已解决

通过添加connectString https://github.com/typeorm/typeorm/issues/3484#issuecomment-472315370解决

【问题讨论】:

  • 这似乎很明显——您是否尝试过将数据库客户端(如DataGrip)连接到您的数据库?如果是这样,您能否验证您的 ResultPage 表中是否有数据?
  • 好的,这有帮助,事实证明我正在创建一个新表。我要定位的表,我可以在“其他用户”>特定用户>表下找到。但是我可以在 sql developer 中查询这个表,那么现在如何从 typeorm 连接?

标签: javascript orm nestjs typeorm


【解决方案1】:

这个问题有点令人困惑。我错过了错误和数据库配置。

result_page vs RESULT_PAGE:表名

在 linux/unix 上,表名是区分大小写的,所以你应该在注解中设置它

@Entity({name: 'RESULT_PAGE'})

如果不是,请提供一些细节以找出根本原因。

【讨论】:

  • 我将其标记为正确,因为区分大小写是个问题。谢谢一百万
猜你喜欢
  • 2021-09-25
  • 2021-10-19
  • 1970-01-01
  • 2019-08-13
  • 2019-11-13
  • 2021-05-26
  • 2019-05-09
  • 2019-08-02
  • 2021-02-27
相关资源
最近更新 更多