首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >类型'{ id: string;}‘的参数不能分配给'FindOneOptions<Seller>’类型的参数

类型'{ id: string;}‘的参数不能分配给'FindOneOptions<Seller>’类型的参数
EN

Stack Overflow用户
提问于 2022-06-30 05:26:06
回答 4查看 2.1K关注 0票数 3

使用mongodb by typeormnestjs -创建crud rest

当试图通过获取数据时,findone()使用'id‘。降至误差以下

TS2345:类型'{ id: string;}‘的参数不能分配给'FindOneOptions’类型的参数。 对象文字只能指定已知的属性,并且'id‘在'FindOneOptions’类型中不存在。

代码:

代码语言:javascript
运行
复制
 const result = await this.sellerRepository.findOne({ id });

实体

代码语言:javascript
运行
复制
@Entity('seller')
export class Seller {
  @ObjectIdColumn()
  id: ObjectID;
  @Column({
    type: 'string',
    nullable: false,
    name: 'product_name',
  })
  productName: string;
  @Column({
    name: 'short_desc',
  })
}

async findOne(id: string): Promise<Seller> {
    const result = await this.sellerRepository.findOne({ id });
    return result;
  }

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-07-01 07:47:07

这是我的解决方案。

我用了new ObjectID(id)import { ObjectID } from 'mongodb';

如果遇到类似于TS7016的错误,则无法找到模块'mongodb'的声明文件

然后按照下面的步骤

  1. 在根项目中创建带有“类型”的文件夹
  2. 创建index.d.ts
  3. 加入declare module 'mongodb'
  4. index.d.ts文件中添加tsconfig.json文件中的typeRoots路径,如下所示

"typeRoots": [ "./typings", "./node_modules/@types/" ]

样本代码

代码语言:javascript
运行
复制
import { ObjectID } from 'mongodb';
 async findOne(id: string): Promise<Seller> {
    const result = await this.sellerRepository.findOne(new ObjectID(id));
    return result;
  }
票数 1
EN

Stack Overflow用户

发布于 2022-06-30 18:16:17

你应该使用findOneBy

代码语言:javascript
运行
复制
findOne(id: number): Promise<User> {
   return this.usersRepository.findOneBy({ id: id });
}
票数 2
EN

Stack Overflow用户

发布于 2022-06-30 16:47:59

您可以使用fithOneBy({id})findOne(id)。您提供的签名与TypeORM提供的任何方法不匹配,这就是为什么类型记录会发出抱怨。

您可以始终检查所有可用选项这里这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72810663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档