mongoose 从一个集合中获取数据并将其放入另一个集合

vuktfyat  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(177)

我 有 一 个 集合 , 我 想 将 文档 中 的 信息 存储 在 另 一 个 集合 中 。 根据 我 阅读 的 文章 , 他们 首先 从 集合 中 查找 所 需 的 值 , 然后 将 其 作为 子 文档 存储 在 另 一 个 集合 中 , 但 我 希望 Mongoose 自动 接收 和 存储 来自 集合 的 数据 。 我 使用 NEST 和 Mongoose 。
CreateProduct.schema.ts:

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';

export type CreateProductDocument = Product & Document;

@Schema()
export class Product {
  @Prop()
  name: string;
  @Prop()
  describe: string;
}

export const CreateProductSchema =
  SchemaFactory.createForClass(Product);

中 的 每 一 个
ReserveProduct.schema.ts:

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import mongoose, { Document } from 'mongoose';
import { Product } from 'src/fake-product/schema/product.schema';

export type ReserveDocument = Reserve & Document;

@Schema()
export class Reserve {
  @Prop()
  name: string;
  @Prop({
    type: [{ type: mongoose.Schema.Types.ObjectId, ref: Product.name }],
    name: 'products',
  })
  products: Product;
}

export const ReserveSchema = SchemaFactory.createForClass(Reserve);

格式
我 想 在 保留 产品 架构 中 嵌入 产品 信息 。

    • 预期 * *

我 想 从 用户 处 获取 此 请求 正文

{
'name' : 'TestName',
'products' : ['63317a213a320785264bb86d' , '63317a743a320785264bb871']
}

格式
并 从 产品 集合 中 获取 产品 详细 信息 ( 如 名称 等 ) , 然后 将 值 嵌入 到 保留 集合 中 。 我 阅读 了 此 代码 , 但 无法 完全 工作

async reserved(body: CreateFakeReserve) {
    const createdFakeReserveInstance = new this.fakeReserve({
      ...body,
      name: 'test',
    });
    await createdFakeReserveInstance.populate('products');
    const res = await createdFakeReserveInstance.save();
    return res;
  }

格式
在 此 代码 中 , 使用 产品 集合 填充 id , 但 不 保存 在 保留 集合 上 , 在 博客 中 , 我们 首先 应该 使用 mongoose 上 的 find 方法 从 产品 集合 中 获取 产品 , 但 我 希望 设置 id , mongoose 从 集合 中 读取 数据 , 并 自动 嵌入 到 我 的 产品 集合 中

ve7v8dk2

ve7v8dk21#

您目前所做的只是在您的Reserve文件中参照Product文件。如此一来,这两个集合会彼此独立管理。如果您想要将Product文件内嵌到您的Reserve文件中,您应该执行下列动作:

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import mongoose, { Document } from 'mongoose';
import { Product } from 'src/fake-product/schema/product.schema';

export type ReserveDocument = Reserve & Document;

@Schema()
export class Reserve {

  @Prop()
  name: string;

  @Prop([Product])
  products: Product[];
}

export const ReserveSchema = SchemaFactory.createForClass(Reserve);

相关问题