Typeorm多对一/一对多导致意外结果

时间:2020-03-04 04:59:27

标签: typeorm

我是Typeorm的新手,但我觉得我有一个非常简单的示例,它导致了一些意外的结果。可以说我有一个客户。每个客户端可以有许多ClientUsers。每个ClientUser只能有一个客户端。

示例:

客户端架构:

module.exports = new EntitySchema({
    name: "Client",
    target: Client,
    columns: {
        id: {
            primary: true,
            type: "uuid",
            generated: "uuid"
        },
        name: {
            type: "varchar"
        },
        telephone: {
          type: "varchar"
        },
        email: {
            type: "varchar"
        }
    },
    relations: {
        client_users: {
            target: "ClientUser",
            type: "one-to-many",
            cascade: true
        }
    }
});

ClientUser架构:

module.exports = new EntitySchema({
    name: "ClientUser",
    target: ClientUser,
    columns: {
        id: {
            primary: true,
            type: "uuid",
            generated: "uuid"
        },
        first_name: {
            type: "varchar"
        },
        last_name: {
            type: "varchar"
        },
        title: {
            type: "varchar"
        },
        email: {
            type: "varchar"
        },
        username: {
            type: "varchar"
        },
        password: {
            type: "varchar"
        }
    },
    relations: {
        client: {
            target: "Client",
            type: "many-to-one",
            joinColumn: true,
            cascade: true
        }
    }
});

这将导致ClientUser表具有名为clientid的列,该列始终为空。如果我将ClientUser架构关系更改为以下内容(将客户端更新为client_id):

    relations: {
        client_id: {
            target: "Client",
            type: "many-to-one",
            joinColumn: true,
            cascade: true
        }
    }

我得到了名为clientIdId的列,但该列已正确填充了相关的客户端ID。

很明显,我在这里做的事情确实很错,但是我已经看了很久了,它逃脱了我。请帮助我了解如何获得一个逻辑列名,该列名将按预期填充。

0 个答案:

没有答案