将包含信息的对象存储在单独的.js文件或数据库中会更好吗?

时间:2019-04-21 01:13:08

标签: javascript node.js mongodb express mongoose

我正在创建一个RPG游戏网络应用程序,并且希望存储有关技能和特质的预定信息。即一系列定义“战斗强化赋予+2力量”和“无情的过去赋予-1社交”之类的对象。

我正在为我的应用程序使用Express和NodeJS,为我的数据库使用Mongoose&MongoDB并以HTML作为前端创建此文件。我对此还比较陌生,如果这是一个简单的问题,请您道歉!

我最初的想法是为相关属性创建猫鼬模式,即:

const attributeSchema = new Schema({
    type: String, //i.e. trait, skill, background
    description: String, //flavortext
    modifiers: {
        stats: {
            strength: Number,
            social: Number,
            //etc...
        },
        skills: {
            melee: Number,
            ballistics: Number,
            //etc...
        }
    }
});

然后,我将创建一个.js文件来运行,该文件将通过上述模式创建所有信息并将其保存到MongoDB,从而“播种”数据库。如果我需要添加新的特质/技能(例如,将来我引入新的特质“ Smelly Armpits”或引起-3社交的特质),则必须创建新的脚本来添加这些特质/技能。 ...除非有我没有学过的更好的方法!

我的另一个想法是将所有这些内容都放在一个静态.js文件中,作为一个对象,必要时可以require或作为app.locals变量。例如

const attributes = {
  traits: [
    {
      name: 'Coffee Breath',
      description: 'Try brushing your teeth sometime!',
      modifiers: [{social: -1}]
    },
    {
      name: 'Echoes of the Void',
      description: 'The voices, they whisper to you...',
      modifiers: [{sanity: -999}, {intelligence: +2}]
    }
  ],
  //etc...
}

请告诉我是否有推荐的方法来执行此操作,或者我是否缺少某些东西/可以做得更好!

1 个答案:

答案 0 :(得分:0)

对于一个简单的项目,将这些内容存储在json文件中可能是一个更好的主意。

鉴于您的角色不会彼此继承属性,所以在我看来,设置MongoDB并不是最明智的选择。

此外,通常会设置Mongoose,并且数据库会很费力,并且对于给定的用例而言过于复杂。