Предложение Where в виде строки в типе Find/findOne.

#typescript #typeorm

Вопрос:

Я искал и читал документы, но не нашел решения.

Есть ли способ установить параметр where в качестве строки в find/findOne методе в TypeORM?

Потому что, похоже, TypeORM не принимает частные атрибуты в качестве параметра в find/findOne методах, и я понимаю, почему.

Например, это используемый класс:

 import { Column } from 'typeorm';

@Entity()
export default class Client extends BaseEntity{
    ...

    @Column({ name: 'email', type: 'varchar', length: 64, unique: true })
    private _email: string;

    ...
}
 

Это функция контроллера:

 ...

async function testing(request: Request, response: Response, next: NextFunction) {
    const { name, email, password } = request.body;
    
    const existingClient = await Client.findOne({ _email: email });

    console.log(existingClient);
}

...
 

Я думал создать что-то вроде:

 await Client.findOne({`email = testing@email.com`});
 

Есть ли способ сделать это?

Комментарии:

1. Это кажется странным. Почему вы хотите, чтобы поле было закрытым здесь? Возможно, этот открытый вопрос имеет отношение к делу: github.com/typeorm/typeorm/issues/3548

Ответ №1:

Я бы рекомендовал просто использовать его как public .

Если вы действительно хотите использовать private , вам, вероятно, потребуется использовать entitymanager:

 entityManager
    .createQueryBuilder(Client, "client")
    .where("client._email = :email", { email: 'testing@email.com' })
    .getOne();
 

Что такое и как добавить entityManager : https://typeorm.io/#/working-with-entity-manager

Комментарии:

1. Я думаю, что это лучшее решение, спасибо, чувак! 😀