创建包含对象数组的猫鼬模式

Posted

技术标签:

【中文标题】创建包含对象数组的猫鼬模式【英文标题】:Creating mongoose schema that contains array of Objects 【发布时间】:2019-02-20 12:46:29 【问题描述】:

如何创建具有以下结构的猫鼬模式

 
       data: 
        name: "John doe",
        attributes: [
          
            text: "Sample text",
            created_at: "2018-08-23"
         ,
        
            text: "Sample text 2",
            created_at: "2018-08-23"
         
        ],
       created_at: "2018-08-23"
     

【问题讨论】:

【参考方案1】:

这可以简单地使用对象数组来完成,而不是创建新模式。我不知道优化是否有一些影响。

    attributes: [
    text: String,
    created_at: Date
], 

这是遵循 Mongoose 官方文档的。

【讨论】:

【参考方案2】:

你可以试试这个

const sampleSchema = new mongoose.Schema(
    data: 
        type: dataSchema
    
);

const dataSchema = new mongoose.Schema(
    name: String,
    attributes: [attributeSchema],
    created_at: Date
);

const attributeSchema = new mongoose.Schema(
    text: String,
    created_at: Date
);

【讨论】:

试过了,但是 created_at 没有反映 根据您的要求更改类型。你可以使用Date.now() 根据 Mongoose 文档,mongoose 有一个时间戳属性,可以自动生成时间戳mongoosejs.com/docs/guide.html#timestamps。我的问题是时间戳被应用到主对象而不是对象数组。 我错过了 dataSchema 中的一个属性。我已经更新了sn-p。立即尝试 sn-p。

以上是关于创建包含对象数组的猫鼬模式的主要内容,如果未能解决你的问题,请参考以下文章

如何将对象响应对象的猫鼬聚合数组转换为json对象响应

嵌入式数组中的猫鼬更新对象

如何将日期格式从对象的猫鼬数组更改为 ejs 视图上的字符串?

嵌套模式/子文档对象中的猫鼬 findById() - 聚合

带有数组的猫鼬模式

带有数组的猫鼬模式