Joey Gough
Joey Gough

Reputation: 3103

NestJS, TypeORM, can't fetch data

I am trying to get started with NestJS which uses TypeORM.

I have connected to a database. At least I think I have, because I was getting a lot of errors and after enough tuning of the config, the errors went away and the connection seems to be successful.

So now I want to fetch any bit of data just to get started.

There is a table in the database called RESULT_PAGE, so I just want to fetch any record from that. This is what I have tried:

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();
  }
}

If I edit the service to look like this:

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();
  }
}

then I get 'hello world', so it is definitely that the RESULT_PAGE table isn't connected

In the AppModule I am loading the entities like this

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

I am sure that I am making some absolute noob mistake so if someone could help me out here it would be greatly appreciated. I am quite new to databases and api's so any info would help a lot. TIA


SOLVED

Solved by adding a connectString https://github.com/typeorm/typeorm/issues/3484#issuecomment-472315370

Upvotes: 0

Views: 2369

Answers (1)

tano
tano

Reputation: 2817

A little bit confusing the question. I miss the error and the database config.

result_page vs RESULT_PAGE: tablename

on linux/unix the tablenames are case sensitive, so you should set it in the annotation

@Entity({name: 'RESULT_PAGE'})

Please give some details to find the root cause if it was not that.

Upvotes: 2

Related Questions