mongodb 如何使Mongoose对象ID数组引用父对象未知键的对象

lf3rwulv  于 2022-12-18  发布在  Go
关注(0)|答案(2)|浏览(171)

这里我将介绍一些保存到模式中JSON对象。
Article Schema design:

const Article = new Schema({
  postBy: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User"
  },
  contents: {
    type: Map,
    of: mongoose.Schema.Types.ObjectId,
    ref: "Content"
  }
})

因为在Article中,每个文档里面的语言量是未知的,所以不能设置为:

contents: {
  en: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: "Content"
  }],
  jp: [{
    type: mongoose.Schema.Types.ObjectId,
    ref: "Content"
  }],
...
}

如果我想将记录保存到Article,将返回错误消息:

message: "Articles validation failed: contents.en: Cast to ObjectId failed for value \"[ 620e18b647a8f541892f3046, 620e18b847a8f541892f3048 ]\" (type Array) at path \"contents.$*\", contents.jp: Cast to ObjectId failed for value \"[ 620e18b847a8f541892f304a, 620e18b847a8f541892f304c ]\" (type Array) at path \"contents.$*\""
name: "ValidationError"


有没有人可以帮助设计一个可以支持未知语言的模式,并且语言键是动态的,然后可以将引用objectId保存到content[keys]中,以建立Article模式和Content模式之间的关系?

q9yhzks0

q9yhzks01#

你可以试试这个:

const Article = new Schema({
  postBy: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User"
  },
  contents: {
    type: Map,
    of: {
        type: [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: "Content"
            }
        ]
    }
  }
})
nmpmafwu

nmpmafwu2#

entry:{
    type:[new Schema({},{versionKey:false,strict:false,_id:false})],
    required:false,
    default:[]
  },

这是我能想到的创建任意对象数组的方法

相关问题