Skip to content

@loopback/cli: Relation belongsTo create incorrect controller #5430

@mrnetforge

Description

@mrnetforge

Steps to reproduce

  • Create sample model with id/name field
  • Create another sample model with id/name field
  • Create relation:
  • lb4 relation --sourceModel=Model --destinationModel=ModelTwo --foreignKeyName=model_two_id --relationType=belongsTo --relationName=relation_name -y

Current Behavior

When relationName is used as custom value, controller that is generated by cli have wrong reference to relation, ignoring value that i provide by cli

Expected Behavior

Correct reference to relation inside generated controller.

Additional information

linux x64 10.18.1
bash-4.4#  npm ls --prod --depth 0 | grep loopback
+-- @loopback/authentication@4.1.1
+-- @loopback/boot@2.0.2
+-- @loopback/context@3.2.0
+-- UNMET PEER DEPENDENCY @loopback/core@2.2.0
+-- @loopback/openapi-v3@3.1.1
+-- UNMET PEER DEPENDENCY @loopback/repository@2.0.2
+-- @loopback/rest@3.1.0
+-- @loopback/rest-explorer@2.0.2
+-- @loopback/service-proxy@2.0.2
+-- loopback-connector-mysql@5.4.3
npm ERR! missing: @firebase/app@0.6.0, required by b3api@1.0.0
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/repository@^1.16.0, required by @loopback/model-api-builder@2.0.2
npm ERR! extraneous: @firebase/app@0.6.0 /var/www/angularnoderestfulservice/b3api/node_modules/@firebase/app
npm ERR! missing: @types/node@10.17.17, required by @types/node-fetch@2.5.5
npm ERR! missing: @types/node@10.17.17, required by @types/tunnel@0.0.1
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/repository@^1.16.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/repository@^1.16.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! peer dep missing: @loopback/core@^1.12.0, required by @loopback/model-api-builder@2.0.2
npm ERR! missing: @types/node@10.17.17, required by @types/fs-extra@8.1.0
npm ERR! missing: @types/node@10.17.17, required by protobufjs@6.8.9

Related Issues

After some investigation in belive that inside packages/cli/generators/relation/templates/controller-relation-template-belongs-to.ts.ejs

import {
  repository,
} from '@loopback/repository';
import {
  param,
  get,
  getModelSchemaRef,
} from '@loopback/rest';
import {
  <%= sourceModelClassName %>,
  <%= targetModelClassName %>,
} from '../models';
import {<%= sourceRepositoryClassName %>} from '../repositories';

export class <%= controllerClassName %> {
  constructor(
    @repository(<%= sourceRepositoryClassName %>)
    public <%= paramSourceRepository %>: <%= sourceRepositoryClassName %>,
  ) { }

  @get('/<%= sourceModelPath %>/{id}/<%= targetModelName %>', {
    responses: {
      '200': {
        description: '<%= targetModelClassName %> belonging to <%= sourceModelClassName %>',
        content: {
          'application/json': {
            schema: {type: 'array', items: getModelSchemaRef(<%= targetModelClassName %>)},
          },
        },
      },
    },
  })
  async get<%= targetModelClassName %>(
    @param.path.<%= sourceModelPrimaryKeyType %>('id') id: typeof <%= sourceModelClassName %>.prototype.<%= sourceModelPrimaryKey %>,
  ): Promise<<%= targetModelClassName %>> {
    return this.<%= paramSourceRepository %>.<%= paramTargetModel %>(id);
  }
}

paramTargetModel should be replaced as relationPropertyName like in other templates

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions