2017-09-19 9 views
0

オブジェクトの配列を含むmongooseスキーマを作成しようとしています。スキーマは次のようになります。Mongoose、オブジェクトの配列で明示的にスキーマを作成

const mapSchema = new Schema({ 
    name: { 
    type: String 
    }, 
    description: { 
    type: String 
    }, 
    rate: { 
    type: Number, 
    default: 0 
    }, 
    sumOfRates: { 
    type: Number, 
    default: 0 
    }, 
    places: [ 
    { 
     name: String, 
     description: String, 
     difficulty: { type: String, default: 0 }, 
     sumOfRates: { type: String, default: 0 }, 
     lat: Number, 
     lng: Number 
    } 
    ] 
}, { 
    timestamps: true 
}) 

場所はオブジェクトの配列です。私はmongooseスキーマを作成し、places配列の要素として使用しようとしました(場所:[ref: 'placeSchema'])。

const placeSchema = new Schema({ 
    name: { 
    type: String 
    }, 
    description: { 
    type: String 
    }, 
    difficulty: { 
    type: Number, 
    default: 0 
    }, 
    lat: { 
    type: Number 
    }, 
    lng: { 
    type: Number 
    } 
}) 

しかし、私はそれがmongo(ドキュメントの場所)に別の、separetedドキュメントを作成すると思います。それは?私は郵便配達でJSONを挿入しようとすると、私は、私にエラーを与え、1 document.Now(上記の貼り付けコード)でそれを維持するには、このような事態を回避しよう:

{ 
    "name": "ergergergg", 
    "description": "rgergrg", 
    "places": [ 
     { 
      "name":"cvcv", 
      "description":"rgergrg", 
      "lat":233, 
      "lng":232 
     }] 
} 

がエラー:

ValidationError: places: Cast to Array failed for value "[object Object]" at path "places" 

なぜそのようなエラー?これを修正するには?

答えて

0

適切な方法は、サブスキーマを使用することです。完璧な作品

mapSchema.insert({ 
    name: "ergergergg", 
    description: "rgergrg", 
    places: [ 
     { 
      name: "cvcv", 
      description": "rgergrg", 
      lat: 233, 
      lng: 232, 
     }, 
    ], 
}); 
+0

新しいデータを挿入するには

const subSchema = new Schema({ name: { type: String, }, description: { type: String, }, difficulty: { type: Number, default: 0, }, lat: { type: Number, }, lng: { type: Number, }, }); 

const mapSchema = new Schema({ name: { type: String, }, description: { type: String, }, rate: { type: Number, default: 0, }, sumOfRates: { type: Number, default: 0, }, places: [subSchema], }, { timestamps: true }); 

、ありがとう:) –

関連する問題