Mongodb 使用typegoose从嵌套对象自动创建新文档

Mongodb 使用typegoose从嵌套对象自动创建新文档,mongodb,mongoose,typegoose,Mongodb,Mongoose,Typegoose,我想知道的是,当我在Typegoose类中保存一个新文档,其中包含许多标记为Ref的嵌套对象时,它是否会自动从正确集合中的这些嵌套对象创建新文档 目前,此代码给了我一个错误: nestedProp:CastError:Cast to ObjectId失败,路径“nestedProp”处的值“{Prop1:'test1',Prop2:'test2'}” 从“@typegoose/typegoose”导入{getModelForClass,prop,Ref}”; 从“猫鼬”进口猫鼬; 导出类嵌套类{

我想知道的是,当我在Typegoose类中保存一个新文档,其中包含许多标记为
Ref
的嵌套对象时,它是否会自动从正确集合中的这些嵌套对象创建新文档

目前,此代码给了我一个错误:

nestedProp:CastError:Cast to ObjectId失败,路径“nestedProp”处的值“{Prop1:'test1',Prop2:'test2'}”

从“@typegoose/typegoose”导入{getModelForClass,prop,Ref}”;
从“猫鼬”进口猫鼬;
导出类嵌套类{
@支柱(
Prop1!:字符串;
@支柱(
Prop2?:字符串;
}
导出类main类{
@支柱(
名称!:字符串;
@属性({ref:“NestedClass”})
nestedProp?:参考;
}
举个例子,对象={
名称:“测试”,
嵌套道具:{
Prop1:“test1”,
Prop2:“test2”,
},
};
异步函数测试(){
等待猫鼬。连接(“mongodb://localhost:27017/database");
const ClassModel=getModelForClass(MainClass);
试一试{
const u=await ClassModel.create(exampleObject);
}捕获(e){
控制台日志(e);
}
}
test();
我知道mongoose要求对象与ObjectId一起提供,而不是对象

但是,问题是我有很多大类和很多嵌套类,我试图避免循环遍历所有大对象,以先保存嵌套对象,再保存大对象


谢谢您的回答。

这目前是不可能的,但目前有一个问题

import { getModelForClass, prop, Ref } from "@typegoose/typegoose";
import mongoose from "mongoose";

export class NestedClass {
  @prop()
  Prop1!: string;
  @prop()
  Prop2?: string;
}

export class MainClass {
  @prop()
  name!: string;
  @prop({ ref: "NestedClass" })
  nestedProp?: Ref<NestedClass>;
}

let exampleObject = {
  name: "test",
  nestedProp: {
    Prop1: "test1",
    Prop2: "test2",
  },
};

async function test() {
  await mongoose.connect("mongodb://localhost:27017/database");
  const ClassModel = getModelForClass(MainClass);
  try {
    const u = await ClassModel.create(exampleObject);
  } catch (e) {
    console.log(e);
  }
}
test();