【问题标题】:How do I save a mongodb document with my own ID field and Js date field如何使用自己的 ID 字段和 Js 日期字段保存 mongodb 文档
【发布时间】:2022-11-09 19:58:08
【问题描述】:

我正在创建一个 POST 端点,其请求和响应应采用以下格式。我使用 mongoose 在架构中定义 balance 和 name 字段。如何在响应中添加日期和 ID 字段。

我试着传入 {id:uuidv4(),日期:新日期()} 到数据库保存方法。

【问题讨论】:

  • 请包含一些代码来演示您尝试过的内容和问题。
  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。

标签: javascript mongodb mongoose mern


【解决方案1】:

首先,如果实体配置正确,mongodb会通过继承Document类自动生成id以及createdAt/updatedAt字段。对于这里的示例,我使用的是 Nest.js 框架(您可以创建一个类似的模型而无需装饰器)

@Schema()
export class SomeEntity extends Document {
  @Prop({ required: false })
  balance: number;

  @Prop({ required: false })
  name: string;

  @Prop({ required: true, default: uuidv4() })
  transctionId: string;
}

export const SomeSchema = SchemaFactory.createForClass(SomeEntity)

您还可以指定其他日期字段以便于访问

@Schema()
    export class SomeEntity extends Document {
      @Prop({ required: false })
      balance: number;

      @Prop({ required: false })
      name: string;

      @Prop({ required: true, default: uuidv4() })
      transctionId: string;

      createdAt: Date;

      updatedAt: Date;
    }

export const SomeSchema = SchemaFactory.createForClass(SomeEntity)

创建实体时,只应指定必填字段。结果将返回一个包含所有字段的完整创建实体

 const newSubject = new this.someEntity({
    balance: yourBalance,
    name: yourName,
  });

  return await newSubject.save();

您可以立即解构必要的字段并分别返回它们

 const {_id, createdAt, updatedAt} = await newSubject.save();

 return {_id, createdAt, updatedAt}

注意 mongodb '_id' 的样子

【讨论】:

    猜你喜欢
    • 2022-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2012-01-04
    • 2019-09-20
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多