如何从请求中返回用户对象

时间:2019-11-27 07:41:20

标签: typescript typeorm

我只想从请求中返回用户对象。

public async getUserByHash(hash: IHash) {
    this.logger.log('Hash for check email geted');
    const user = await this.hashRepository.findOne({
        select: ['id', 'user'],
        relations: ['user'],
        where: hash,
    });
    return user;
}

用户变量现在包含。

{
    id:2
    user: {
        id: 3, 
        email:"email@test.com",
        password:"12345678"
    }
}

我只想获取用户字段,即他的标识符和他的电子邮件。

我试图这样做,但出现错误。

public async getUserByHash(hash: IHash) {
    this.logger.log('Hash for check email geted');
    const user = await this.hashRepository.findOne({
        select: ['user.id', 'user.email'],
        relations: ['user'],
        where: hash,
    });
    return user;
}

但是我出错了。

  

QueryFailedError:ER_BAD_FIELD_ERROR:“字段列表”中的未知列“ distinctAlias.Hash_id”

如何仅获取用户字段,ID和电子邮件?

2 个答案:

答案 0 :(得分:1)

您可以尝试lodash

import { pick as _pick } from 'lodash'; 

public async getUserByHash(hash: IHash) {
    this.logger.log('Hash for check email geted');

    const user = await this.hashRepository.findOne({
        select: ['id', 'user'],
        relations: ['user'],
        where: hash,
    });

    return _pick(user.user, ['id', 'email']);
}

答案 1 :(得分:0)

我想你可以试试这个。

return user.user

希望有效。