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

在TypeORM/MongoDB中,用自定义字符串替换ObjectId字段

姜兴业
2023-03-14

我有一个NestJSRESTAPI,并将TypeORM与MongoDB一起使用。我想创建一个名为project的实体。我从一个基本实体开始,我刚刚读到我应该使用ObjectedColumn,而不是PrimaryColumn

@Entity()
export class Project extends BaseEntity {
  // The technical project name
  @ObjectIdColumn({ generated: false })
  public id: ObjectID;

  // The display name
  @Column({ unique: true })
  public name: string;

  // The project successor
  @Column({ nullable: true })
  public successorId: ObjectID;

  // Configuration stuff for that project
  @Column()
  public configuration: object;
}

我想知道是否可以用字符串类型的主列替换该对象id列。id字段基于特殊模式,例如name字段

我超棒的项目

将导致

我很棒的项目

对于id字段。当然,我使用了生成的: false,但是我必须传递一个自定义字符串,而不是ObjectID。目前这是不可能的,因为文档说ObjectID

可以是24字节十六进制字符串、12字节二进制字符串或数字。http://mongodb.github.io/node-mongodb-native/2.1/api/ObjectID.html

那么,使用自定义字符串作为ID字段需要做些什么呢?我能想到的唯一一件事就是创建第二个字段,例如TheAlid,并将其视为ID字段,忽略自动生成的ObjectId。。。

共有1个答案

谭向晨
2023-03-14

从我所学到的,这里是你能做的

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

  @PrimaryColumn()
  id: string;

  // The display name
  @Column({ unique: true })
  public name: string;

  @Column({ nullable: true })
  public successorId: ObjectID;

  @Column()
  public configuration: object;
}
  • MongoDB将使用\u id作为内部id,您不会通过程序(以及api)公开该id

来源:个人学习和Udemy课程: NestJS零到英雄-现代打字稿后端开发

 类似资料:
  • --------编辑-------------------------------------------- 我在我的服务器行为中发现了一些非常奇怪的东西。当我执行一个简单的findById调用时,我的image项是一个Objectid数组。但是当使用聚合时,ObjecIds变成了String。有人知道上面是什么吗?

  • 本文向大家介绍C#自定义字符串替换Replace方法实例,包括了C#自定义字符串替换Replace方法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#自定义字符串替换Replace方法。分享给大家供大家参考。具体实现方法如下: 一、问题: 前一阵遇到一个如标题的算法题,是将原有字符串的某些片段替换成指定的新字符串片段,例如将源字符串:abcdeabcdfbcdefg中的cde替换成

  • 标题可能不太清楚,问题在这里 我正在执行此表单中的更新: 仅当没有具有相同用户ID的文档时才在数组中插入文档(解决方法是,唯一索引在数组中不起作用)。代码在mongo控制台上运行良好。从我的应用程序中,我使用以下内容: 如果作为“userid”,我使用的字符串不能是mongo ObjectId,那么这很好,但是如果我在示例中使用该字符串,则执行的查询如下所示(来自mongosniff): 该字符串

  • 示例:[可爱]微笑这是测试[笑哭] 目的:将这个字符串中所有中括号表示的文字替换为emoji

  • 我已经尝试遍历字符串并手动替换它们,但计数是关闭的。我也尝试过使用列表、数组、stringbuilder等,但我无法使其工作: 我觉得必须有一种简单的方法来用子字符串替换字符串中的单个字符,而不必进行所有这些迭代。我说错了吗?