当前位置: 首页 > 知识库问答 >
问题:

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

霍财
2023-03-14

我将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个答案

谭炎彬
2023-03-14

当您执行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: });

 类似资料:
  • 当然,现在只能检测带有0个参数的函数。为什么在使用时正确选择了专门化,而不是?

  • 我有一个代表文件夹的对象集合。我想让用户创建文件夹,因为他们喜欢与应用程序将创建一个“根”文件夹(对象)的约束,我想控制这个文件夹的_id属性。根据mongoDB文档,我应该能够设置_id字段,但是当我尝试时,我得到一个错误: mongo文档说_id可以是数组以外的任何BSON数据类型,因此我不理解为什么“0”无效。为什么我不能使用“0”作为\u id? 为了清楚起见,我希望mongoDB为根文件

  • Stage.close()对我不起作用。 我查看了:JavaFX2.0:关闭一个舞台(窗口) 这是我的代码: 下面是调用消息框类的代码:

  • 问题内容: 我正在尝试从JSON网址获取集合。骨干网确实发送了请求并得到了响应,但是在它之后的集合中没有: 这是我的JavaScript: 响应中的JSON 响应中的Content-Type HTTP标头为。 为什么不将其加载到集合中?JSON是否正确? 一些更多的代码: 问题答案: 是异步的。尝试 要么 要么

  • 问题内容: 我有三部分字符串,每个部分用 符号分隔 。例如, 现在,当我使用这样的方法拆分它时: 它包含整个字符串作为单个元素的数组。 但是当我使用这个: 它完美的作品是什么,我想这意味着 现在的数组包含,并分别对指数0,1和2。 我想知道为什么第一次使用时不起作用,因为我在使用 问题答案: 因为字符是在正则表达式中用来标记行尾的保留令牌。因此,您必须使用进行 转义。