#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. Я думаю, что это лучшее решение, спасибо, чувак! 😀