Как сохранить массив объектов в БД Мангуста

Я пытаюсь сохранить таблицу лидеров из объектов, вложенных в массив. Я хочу сохранить его в своей базе данных, но мне не удалось создать правильную схему, и я не думаю, что это лучший путь. Когда я запускаю код, я получаю ошибку:

«LeaderBoardSchema не является конструктором».

Каков подходящий способ создания схемы, которая мне нужна.

Я пробовал много вариантов, просматривая онлайн, но я продолжаю получать "LeaderBoardSchema не конструктор".

Примеры из других вопросов по SO не смогли мне сильно помочь.

// leaderboard object that i want to save leaderBoard = [ leaderOne= { name: 'Ultimate Beast', score: 2 }, leaderTwo= { name: 'Masked Titan', score: 9 }, leaderThree= { name: 'Oranolio', score: 7 }, leaderFour= { name: 'Popularkiya', score:1 }, leaderFive= { name: 'Bootecia', score: 11 }, ]; // Database schema const Schema = mongoose.Schema() const LeaderBoardSchema = new mongoose.Schema({ leaderBoard:{ leaderOne : { name: String, score: Number }, leaderTwo : { name: String, score: Number }, leaderThree : { name: String, score: Number }, leaderFour : { name: String, score:Number }, leaderFive : { name: String, score: Number } } }, {collection: 'leaderboard-data'}); const PlayerData = mongoose.model('LeaderBoard Data', LeaderBoardSchema); // My attempt const leaderBoardToSave = new LeaderBoardSchema({ leaderBoard:{ leaderOne : { name: 'asdf', score: 12 }, leaderTwo : { name: 'sfgh', score: 12 }, leaderThree : { name: 'weh', score: 12 }, leaderFour : { name: 'asdf', score:12 }, leaderFive : { name: 'asdf', score: 12 } } }) 

Всего 1 ответ


В настоящее время ваше поле leaderBoard является объектом. Для моделирования массива объектов сделайте следующее со своей схемой:

const LeaderBoardSchema = new mongoose.Schema({
   leaderBoard: [
    {
        name: String,
        score: Number
    }
   ]
  }, {collection: 'leaderboard-data'});

что касается вопроса с конструктором схемы. Вы создаете модель мангуста следующим образом: const PlayerData = mongoose.model('LeaderBoard Data', LeaderBoardSchema); , Но тогда вы делаете new LeaderBoardSchema({...}) . Вам нужно использовать мангуст модель PlayerData . Итак, чтобы создать новый список лидеров:

const leaderBoardToSave = new PlayerData({
        leaderBoard: [
           {
              name: 'asdf',
              score: 12
           },
           {
              name: 'gds',
              score: 12
           },
           {
              name: 'adad',
              score: 12
           },
       ]
    })

Есть идеи?

10000