在 Nestjs 问题中读取对象值

Posted

技术标签:

【中文标题】在 Nestjs 问题中读取对象值【英文标题】:Read object value in Nestjs problems 【发布时间】:2021-06-09 12:10:00 【问题描述】:

在 Nestjs 中读取对象时遇到问题

有代码

    @Post()
  @UseInterceptors(
    FileInterceptor('file', 
      storage: diskStorage(
        destination: (req, file, cb) => 
          const userId = req.body.username;
          const usern = req.user;
          console.log(usern);

          const dir = `./public/avatar/$userId`;
          fs.exists(dir, (exist) => 
            if (!exist) 
              return fs.mkdir(dir, (error) => cb(error, dir));
            
            return cb(null, dir);
          );

console.log(usern) 返回


  _id: '6026654c957fe6330a6d54c2',
  status: 'active',
  iat: 1615467122,
  exp: 1615553522

但如果我尝试获取 req.user._id 则会出现错误 错误 TS2339:“用户”类型上不存在属性“_id”。

【问题讨论】:

【参考方案1】:

看起来像 TypeScript 错误,您的 User 类似乎没有 _id 属性。你应该在类中添加属性。

【讨论】:

req.user return _id: '6026654c957fe6330a6d54c2', status: 'active', iat: 1615467122, exp: 1615553522 ,但我无法访问这些字段中的任何一个。例如 req.user.status 也会出错。 问题不在于你的代码表现如何,而在于你的代码编译。 req.user 应该属于 User 类,因此当您询问 req.user._id 时,它会引发错误,因为您的类中不存在该属性。所以改变你的类以允许编译。

以上是关于在 Nestjs 问题中读取对象值的主要内容,如果未能解决你的问题,请参考以下文章

NestJs:无法读取模块文件中的环境变量但能够读取服务文件?

Nestjs 项目无法启动,因为它读取了其模块之外的文件

NestJS:无法读取未定义的属性“'createObjectLiteralExpression'”

无法窥探原始值;在nestJS中给定的未定义

NestJS/TypeORM:无法读取未定义的属性“createQueryBuilder”

NestJS:如何在@Query 对象中转换数组