Перенос вложенного документа в массив родительского документа. Только Object_ID выдвигается - PullRequest
0 голосов
/ 22 апреля 2020

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

Я пытаюсь превратить sh поддокумент в массив на моем родительском документе. В настоящее время я делаю это следующим образом: Upload-soundboard

const multer = require('multer')
const FILE_PATH  = 'uploads'
const passport = require('passport')
const strategy = require('../strategies/strategy')
const upload = multer({
  dest: `${FILE_PATH}/`
})
const { Soundboard } = require('../models/soundboard')
const express = require('express')
const router = express.Router()

passport.use(strategy.jwtStrategy)

router.post('/', passport.authenticate('jwt', { session: false }), async (req, res) => {
  try {
    //console.log(req.body.name)
    req.user.soundboards.push({
      name: req.body.name,
    })
    //console.log(req.user.soundboards)
    await req.user.save()
    res.send('Success!')
  } catch (err) {
    res.status(500).send(err)
  }
})

module.exports = router

Это фактически делает pu sh вложенным документом в массиве, но добавляет только Object.ID, а не имя, которое я просил Схема выглядит следующим образом:

ПОЛЬЗОВАТЕЛЬ

const User = mongoose.model('User', new mongoose.Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 50
  },
  email: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 255,
    unique: true
  },
  password: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 1024
  },
  soundboards: [SoundboardSchema]
}))

SOUNDBOARD


const Soundboard = new Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 50
  },
  sounds: {
    type: [SoundSchema],
    required: false
  }
})

SOUND


const Sound =  new Schema({
  name: {
    type: String,
    required: true,
    minlength: 5,
    maxlength: 50
  },
  path: {
    type: String,
    required: true
  }
})

Кто-нибудь видит ответ? Заранее спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

Вот как вы должны использовать это вместо:

router.post('/', passport.authenticate('jwt', { session: false }), async (req, res) => {

    try {

        let newSoundboards = {
            name: req.body.name,
        }

//I don't see you loading your model somewhere with the connection
//So I used yourDB as an example.

        await new yourDB(newSoundboards).save()
        res.send('Success!')
    } catch (err) {
        res.status(500).send(err)
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...