Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Mongoose子文档数组中使用子类_Javascript_Mongodb_Mongoose - Fatal编程技术网

Javascript 在Mongoose子文档数组中使用子类

Javascript 在Mongoose子文档数组中使用子类,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我已经找到了一些使用Mongoose和的继承解决方案。当文档存储在一个正常的集合中时,它们似乎可以正常工作。但,我很难弄清楚如何在模型的子文档中存储子类文档数组 假设我们有一个对象“抽屉”,它包含一组“衣服”对象,其中衣服对象实际上可以是几种类型的衣服“袜子”、“衬衫”、“短裤”中的一种 袜子、衬衫和短裤都是服装的子类 所以,我想让我的模型抽屉看起来像这样 var drawerSchema = mongoose.Schema({ // some drawer properties her

我已经找到了一些使用Mongoose和的继承解决方案。当文档存储在一个正常的集合中时,它们似乎可以正常工作。但,我很难弄清楚如何在模型的子文档中存储子类文档数组

假设我们有一个对象“抽屉”,它包含一组“衣服”对象,其中衣服对象实际上可以是几种类型的衣服“袜子”、“衬衫”、“短裤”中的一种

袜子、衬衫和短裤都是服装的子类

所以,我想让我的模型抽屉看起来像这样

var drawerSchema = mongoose.Schema({
    // some drawer properties here
    // ...
    contents: [clothingSchema]
});
我尝试过这种方法,但保存时,只有实际clothingSchema的属性保存到DB中。例如,如果我的衣服模式有一个公共尺寸属性,它将被保存,但我的衬衫对象上名为“buttonDown”的属性将不会被保存

是否有其他人需要进行此类建模,如果有,是否找到了解决方案


谢谢

如果可以在独立集合上使用继承的模式,则可以使用一些外键

var drawerSchema = new Schema({
  contents: [{type: Schema.Types.ObjectId, ref: 'cloth'}],
});

var clothSchema = new Schema({
  size: Number
});

// Then define extended Schemas (Shirt, Sock, Short...)
这种方法还允许在数据库中只定义一次cloth,从而防止不必要地重复相同的数据