嵌套数组 JSON 的 Mongoose 模型

Posted

技术标签:

【中文标题】嵌套数组 JSON 的 Mongoose 模型【英文标题】:Mongoose Model for Nested Array JSON 【发布时间】:2017-09-26 08:52:25 【问题描述】:

我需要为下面的嵌套 JSON 数组创建一个 Mongoose 模型。我面临的问题是 TLSM01 是一个动态密钥,我无法在模型中指定它。如果我单独提及实体并将所有 json 对象作为字符串传递,它将存储为 [object] 而不是数据。

 "entities": [
        
          "TLSM01": [
            
              "01": 
                "Name": "Light",
                "Properties": [
                  
                    "state": [
                      
                        "type": "boolean",
                        "propertyMode": "actuator"
                      
                    ],
                    "brightness": [
                      
                        "type": "integer",
                        "propertyMode": "actuator"
                      
                    ]
                  
                ]
              
            
          ]
        

猫鼬模型:

var thingsSchema = (
    "uuid": String,
    "things": String,
    "manufacturerName": String,
    "manufacturerId": String,
    "osName": String,
    "hardwareVersion": String,
    "firmwareVersion": String,
    "entity": [String]
)

【问题讨论】:

看看***.com/questions/28166463/…和***.com/questions/18317284/mongoose-extending-schemas 【参考方案1】:

将数据存储在键值对中

"entities": [
  
    keyName:'TLSM01',
    data: [
      
        "01": 
          "Name": "Light",
          "Properties": [
            
              "state": [
                
                  "type": "boolean",
                  "propertyMode": "actuator"
                
              ],
              "brightness": [
                
                  "type": "integer",
                  "propertyMode": "actuator"
                
              ]
            
          ]
        
      
    ]
  
]

猫鼬模型:

var thingsSchema = (
    "uuid": String,
    "things": String,
    "manufacturerName": String,
    "manufacturerId": String,
    "osName": String,
    "hardwareVersion": String,
    "firmwareVersion": String,
    "entity": [_id:false,keyName:type:String,data:[]]
)

【讨论】:

【参考方案2】:

1.我认为你需要这样的结构: 2.查看光值如何是一个数组...在对象内 - 必须在 Mongo 中使用键值配对并确保您的模型 Json 对象可以映射到您的 mongoose 数据库 - 因此您使用您的数据模型来输入数据 - 所以这个如果你增加它应该可以工作..

const blogSchema = new Schema(
  
name:
    type:String,
    require: true
  ,
heat:
    type:Number,
    Require:true
  ,
moisture:
    type:Number,
    Require:true
  ,
light:
    green:type:Number, Require:true,
    red:type:Number, Require:true,
    blue:type:Number, Require:true,
    white:type:Number, Require:true
  ,
body:
    type:String,
    require: true
  
,timeStamps:true);

【讨论】:

以上是关于嵌套数组 JSON 的 Mongoose 模型的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 mongoose 中嵌套 JSON 文档中数组字段的日志日期获取最新日志记录

从猫鼬模型传递嵌套的 JSON 数据不起作用

将新对象插入到 mongoose 中的子文档数组字段中

将新对象插入到 mongoose 中的子文档数组字段中

mongoose 怎么插入嵌套数组

您如何在 Node.js + Express + Mongoose + Jade 中处理表单验证,尤其是嵌套模型