TypeOrm с машинописью в функциях Azure: при создании веб-пакета генерируется другой запрос - PullRequest
0 голосов
/ 23 января 2020

у нас есть файл webapck, подобный следующему:

const $ = require('./helpers');
const webpack = require('webpack');
const TerserPlugin = require('terser-webpack-plugin');
const copyWebpackPlugin = require('copy-webpack-plugin');

    module.exports = {
      target: 'node',
      entry: {
        exmp_tenant_add: $.root('./src/bmcl_auth_tenant_get/index.ts'),

        bmcl_auth_user_get: $.root('./src/func_user_get/index.ts'),
        ...
        )
      },
      externals: {
        sqlite3: 'commonjs sqlite3',
        typeorm: 'commonjs typeorm'
      },
      output: {
        path: $.root('dist'),
        filename: '[name]/[name].js',
        libraryTarget: 'commonjs2'
      },
      module: {
        rules: [
          {
            test: /\.ts$/,
            use: 'awesome-typescript-loader?declaration=false',
            exclude: [/\.(spec|e2e)\.ts$/]
          }
        ]
      },
      resolve: {
        extensions: ['.ts', '.js', '.json'],
        modules: ['node_modules', 'src']
      },
      plugins: [
        new webpack.IgnorePlugin(/^pg-native$/),
        new TerserPlugin({
          parallel: true,
          terserOptions: {
            ecma: 6
          }
        }),
        new copyWebpackPlugin([
          {
            from: 'src/host.json',
            to: 'host.json'
          },
          {
            context: 'src',
            from: '**/function.json',
            to: ''
          }
        ])
      ],
      node: {
        __filename: false,
        __dirname: false
      }
    };

и класс сущности

 @Entity('user_master')
    export class User {
      @IsUUID()
      @Column('uuid', {
        nullable: false,
        primary: true,
        name: 'user_id'
      })
      // tslint:disable-next-line: variable-name
      user_id: string;

      @IsNotEmpty()
      @IsEmail()
      @Column('character varying', {
        nullable: false,
        length: 50,
        name: 'email'
      })
      // tslint:disable-next-line: variable-name
      email: string;

      @Column('boolean', {
        nullable: true,
        name: 'is_deleted'
      })
      // tslint:disable-next-line: variable-name
      is_deleted: boolean | null;

      @OneToMany(
        type => UserTenantMapping,
        (userTenantMapping: UserTenantMapping) => userTenantMapping.user,
        { nullable: true }
      )
      userTenantMappings?: Promise<UserTenantMapping[]>;

another entity


    @Entity('user_tenant_mapping')
    export class UserTenantMapping {
      @IsUUID()
      @Column('uuid', {
        nullable: false,
        primary: true,
        name: 'mapping_id'
      })
      // tslint:disable-next-line: variable-name
      mapping_id: string;

      @Column('uuid', {
        nullable: false,
        name: 'user_id'
      })
      // tslint:disable-next-line: variable-name
      user_id: string;

      @IsUUID()
      @Column('uuid', {
        nullable: false,
        name: 'tenant_id'
      })
      // tslint:disable-next-line: variable-name
      tenant_id: string;

      @Column('boolean', {
        nullable: true,
        name: 'is_active'
      })
      // tslint:disable-next-line: variable-name
      is_active: boolean | null;

      @Column('boolean', {
        nullable: true,
        name: 'is_deleted'
      })
      // tslint:disable-next-line: variable-name
      is_deleted: boolean | null;



      @ManyToOne(type => User, user => user.userTenantMappings)
      @JoinColumn({ name: 'user_id' })
      user?: User;
    }

, когда я запускаю этот код в сравнении с кодом, он работает нормально, генерирует правильный sql, но с Веб-пакет, который мы используем для производственной сборки, генерирует запрос следующим образом:

SELECT "user_master". "mapping_id" AS "user_master_mapping_id", "user_master". "user_id" AS "user_master_user_id", "user_master". "tenant_id" AS "user_master_tenant_id", "user_master". "Is_active" AS "user_master_is_active", "user_master". "Is_deleted" AS "user_master_is_deleted" ИЗ "user_tenant_mapping" "user_master" WHERE "user_master". "Is_deleted" = 'false' * 9

он выбирает из реляционной таблицы, где, как и при запуске в отладке, он генерирует sql, что является правильным:

SELECT "user_master"."user_id" AS "user_master_user_id", "user_master"."email" AS "user_master_email", "user_master"."is_deleted" AS "user_master_is_deleted" FROM "user_master" "user_master" WHERE "user_master"."is_deleted" = 'false'

Почему typeorm генерирует имя таблицы запросов: "FROM" user_tenant_mapping "" user_master ""?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...