Loopback-next: 500 Error: The key repositories.UserRepository was not bound to any value

Created on 1 Mar 2019  路  3Comments  路  Source: strongloop/loopback-next

I'm getting this when using createBelongsToAccessorFor.

step 1- > i'm calling "http://localhost:3000/dealers/1/user" endpoint. (getting response correctly with data).
step 2 -> then i'm calling again "http://localhost:3000/dealers/1/user". I'm getting that error.
step 3 -> after restarting loopback server that api works correct.
Only first time after restarting server it works correct.
Please help me to fix this.

Unhandled error in GET /dealers/1/user: 500 Error: The key repositories.UserRepository was not bound to any value.
at RequestContext.getBinding (/home/dilupa/Speralabs/sterling_Vehicle_project/backEnd/lb4/postgresql/sterling-aftercare-system-api/node_modules/@loopback/context/dist/context.js:493:15)
at RequestContext.getValueOrPromise (/home/dilupa/Speralabs/sterling_Vehicle_project/backEnd/lb4/postgresql/sterling-aftercare-system-api/node_modules/@loopback/context/dist/context.js:528:30)
at RequestContext.get (/home/dilupa/Speralabs/sterling_Vehicle_project/backEnd/lb4/postgresql/sterling-aftercare-system-api/node_modules/@loopback/context/dist/context.js:471:27)
at DefaultBelongsToRepository.getter [as getTargetRepository] (/home/dilupa/Speralabs/sterling_Vehicle_project/backEnd/lb4/postgresql/sterling-aftercare-system-api/node_modules/@loopback/context/dist/inject.js:171:20)
at DefaultBelongsToRepository.get (/home/dilupa/Speralabs/sterling_Vehicle_project/backEnd/lb4/postgresql/sterling-aftercare-system-api/node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to.repository.js:21:39)
at DealerRepository.getTargetInstanceOfBelongsTo [as user] (/home/dilupa/Speralabs/sterling_Vehicle_project/backEnd/lb4/postgresql/sterling-aftercare-system-api/node_modules/@loopback/repository/dist/relations/belongs-to/belongs-to-accessor.js:26:32)
at
at process._tickCallback (internal/process/next_tick.js:188:7)

my files-->

--dealer.repository.ts--

import {
DefaultCrudRepository,
BelongsToAccessor,
repository,
} from '@loopback/repository';
import {Dealer, User} from '../models';
import {PostgresqlDBDataSource} from '../datasources';
import {inject, Getter} from '@loopback/core';
import {UserRepository} from './user.repository';

export class DealerRepository extends DefaultCrudRepository<
Dealer,
typeof Dealer.prototype.id

{
public readonly user: BelongsToAccessor;

constructor(
@inject('datasources.postgresqlDB') dataSource: PostgresqlDBDataSource,
@repository.getter(UserRepository)
userRepositoryGetter: Getter,
) {
console.log('sdsdds*');
super(Dealer, dataSource);
this.user = this.createBelongsToAccessorFor('user', userRepositoryGetter);
}
}

--dealer.model.ts--

import {Entity, model, property, belongsTo} from '@loopback/repository';
import {User} from './user.model';

@model()
export class Dealer extends Entity {
@property({
type: 'number',
id: true,
})
id?: number;

@property({
type: 'string',
})
firstName?: string;

@property({
type: 'string',
})
lastName?: string;

@property({
type: 'string',
})
address?: string;

//relations
@belongsTo(() => User)
user: number;

constructor(data?: Partial) {
super(data);
}
}
--dealer.controller.ts--

@get('/dealers/{id}/user')
async getCustomer(
@param.path.number('id') dealerId: typeof Dealer.prototype.id,
): Promise {
return await this.dealerRepository.user(dealerId);
}

Most helpful comment

All 3 comments

@elv1s thank you.. "npm update" fixed my issue.

Closing as resolved. Thanks.

Was this page helpful?
0 / 5 - 0 ratings