猫鼬模式的对象数组

时间:2019-06-16 15:29:22

标签: javascript node.js mongodb mongoose

我有这样的大物件:

const example = {
    startMap: 'Something',
    monsters: [],
    monstersToOmit: [],
    mapsOrder: [1, 2],
    mapsData: [
        {
            id: 1,
            name: 'lol',
            gates: [
                {
                    toId: 2,
                    coords: {
                        x: 49,
                        y: 28
                    }
                }
            ],
            waypoints: [
                [
                    {x: 81, y: 50},
                    {x: 53, y: 59},
                    {x: 64, y: 15},
                    {x: 87, y: 20}
                ],
                [
                    {x: 93, y: 54},
                    {x: 90, y: 10},
                    {x: 67, y: 16},
                    {x: 51, y: 54}
                ],
                [
                    {x: 86, y: 57},
                    {x: 77, y: 19},
                    {x: 59, y: 20},
                    {x: 54, y: 58}
                ]
            ]
        },
        {
            id: 2,
            name: 'nothin',
            gates: [
                {
                    toId: 1,
                    coords: {
                        x: 95,
                        y: 49
                    }
                }
            ],
            waypoints: [
                {x: 40, y: 1},
                {x: 57, y: 8},
                {x: 79, y: 7},
                {x: 81, y: 31},
                {x: 61, y: 28},
                {x: 22, y: 16},
                {x: 11, y: 13},
                {x: 42, y: 49},
                {x: 49, y: 51},
                {x: 78, y: 50},
                {x: 42, y: 37},
                {x: 15, y: 37},
                {x: 7, y: 51}
            ]
        }
    ]
};

我想从中创建猫鼬模式,startMap,monsters,monstersToOmit,mapsOrder很容易,但是我不知道如何构造mapsData,因此我可以将example.mapsData.id类型指定为Number和example.mapsData.gates.coords.x也应为Number,依此类推。

'use strict'
const mongoose = require('mongoose');
const Schema = mongoose.Schema;


const mapSchema = new Schema({
    startMap: {
        type: String,
        required: true,
        unique: true
    },
    monsters: {
        type: Array,
        required: true
    },
    monstersToOmit: {
        type: Array,
        required: true
    },
    mapsOrder: {
        type: Array,
        required: true
    },
    mapsData: {
        ???
    }
});

1 个答案:

答案 0 :(得分:3)

它看起来像这样:

mapsData: [{
    id: Number,
    name: String,
    gates: [{
        toId: Number,
        coords: {
            x: Number,
            y: Number
        }
    }],
    waypoints: [[{x: Number, y: Number}]]
}]

不确定的时候总是可以做mapsData:JSON