Mongodb 使用typegoose从嵌套对象自动创建新文档
我想知道的是,当我在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}”; 从“猫鼬”进口猫鼬; 导出类嵌套类{
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();