В схеме Мангуста, как я могу объявить несколько свойств с одинаковыми вложенными свойствами одновременно? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть список слотов для снаряжения для листа символов типа RPG.Каждый из слотов имеет тип типа «голова» или «тело», и у каждого из них будет объект, представляющий предмет, который носит персонаж.Каждый элемент оборудования будет иметь одинаковые типы переменных (как показано ниже), но я не хочу писать каждый из них отдельно, потому что список очень длинный.Есть ли способ сказать «каждый из этих типов оборудования будет иметь эти переменные».Ниже моя попытка, но она не работает (говорит «голова не определена») или если я удаляю голову («тело не определено») и т. Д.

equipment: {
    head,
    body,
    legs,
    feet,
    shoulders,
    arms,
    hands,
    back,
    ringLeft,
    ringRight,
    neck,
    rightHand,
    leftHand,
    ammunition: {
      default: {
        name: {
          type: String,
          default: "Empty"
        },
        Type: {
          type: String,
          default: ""
        },
        subType: {
          type: String,
          default: ""
        },
        handling: {
          type: String,
          default: ""
        },
        rarity: {
          type: String,
          default: ""
        },
        durability: {
          max: {
            type: Number,
            default: 0
          },
          current: {
            type: Number,
            default: 0
          }
        },
        damage: {
          min: {
            type: Number,
            default: 0
          },
          max: {
            type: Number,
            default: 0
          }
        },
        armorClass: {
          type: Number,
          default: 0
        },
        str: {
          type: Number,
          default: 0
        },
        dex: {
          type: Number,
          default: 0
        },
        int: {
          type: Number,
          default: 0
        },
        accuracy: {
          type: Number,
          default: 0
        },
        magicAccuracy: {
          type: Number,
          default: 0
        },
        magicDefense: {
          type: Number,
          default: 0
        },
        armorPiercing: {
          type: Number,
          default: 0
        },
        resistances: {
          fire: {
            type: Number,
            default: 0
          },
          ice: {
            type: Number,
            default: 0
          },
          lightning: {
            type: Number,
            default: 0
          },
          water: {
            type: Number,
            default: 0
          },
          earth: {
            type: Number,
            default: 0
          },
          wind: {
            type: Number,
            default: 0
          },
          light: {
            type: Number,
            default: 0
          },
          dark: {
            type: Number,
            default: 0
          }
        }
      }
   }
}

1 Ответ

0 голосов
/ 21 декабря 2018

Да, вы можете создать подсхему.Это обычная mongoose-схема, но вы можете объявить атрибуты с этой схемой, поэтому вам не придется снова вводить все эти вещи.test So .. создайте новую схему:

const schema_equipmentAttributes = new Schema({
    name: {
        type: String,
        default: "Empty"
    },
    Type: {
        type: String,
        default: ""
    },
    subType: {
        type: String,
        default: ""
    }
});

Затем вы можете объявить:

equipment: {
    head: { type: schema_equipmentAttributes },
    body: { type: schema_equipmentAttributes },
    legs: { type: schema_equipmentAttributes },
    feet: { type: schema_equipmentAttributes }
}

Это должен быть самый простой способ:)

...