提问者:小点点

为什么使用typeorm和mongodb的id不起作用的地方是FindOne?


我将typeorm与MongoDB一起使用。当我使用以下语法按Id搜索文档时const manager=getMongoManager();const user=await manager.findone(user,{userId});我得到了未定义的结果,当我使用const manager=getMongoManager();const user=await manager.findone(user,{});我得到了第一个语法中需要的userId的结果。

此外,相同的语法适用于ID以外的任何其他标准。

模型中Id的声明为:@objectidColumn({name:“_Id”})@isnotempty()public userid:objectid;

目前,数据库中只有一个用户具有我搜索的userId。

问题可能出在哪里?如何解决这个问题?


共1个答案

匿名用户

当您执行Await Manager.Findone(User,{});时,您基本上是在选择用户集合中的第一个条目,这就是您得到所需用户的原因。

您需要做的是通过_id字段进行查询(如果有的话),或者创建一个自定义字段进行查询,例如:

@Entity()
export class UserEntity
{
  @ObjectIdColumn()
  _id: string;

  @PrimaryColumn()
  id: string;

  @Column()
  public name: string;
}

这样,您就可以执行类似以下的查询:Await Manager.Findone(User,{_id:});

等待Manager.Findone(用户,{id:});