Сохранение вложенных объектов (массивов) с помощью mongoose, в результате чего пустые объекты на mongodb - PullRequest
1 голос
/ 21 апреля 2019

Проблема настолько проста: я хочу сохранить вложенные объекты с помощью mongoose в mongodb, но когда я их сохраняю, вложенные объекты пусты

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

Модель


const mongoose = require('mongoose')
let Schema = mongoose.Schema
const respuestaSchema = new Schema({
    resp:{type:String},
    value:{type:String}
},{ _id : false })

const preguntasSchema = new Schema({
    pregunta:{type:String},
    tipo:{type:String},
    respuesta:[respuestaSchema]
},{ _id : false })

let testSchema = Schema({
    _id:{type:Schema.ObjectId, auto:true},
    name: {type:String},
    dName:{type:String},
    categoria:{type:[Schema.ObjectId],ref:'categoria'},
    preguntas:[preguntasSchema]

},{versionKey:false})

module.exports = mongoose.model('test',testSchema)

Тест сохранения:

const Test = require('../models/test')

exports.newTest = function(req,res){
    let param = req.body
    let nTest = new Test()
    nTest.name = param.name
    nTest.dName = param.dName
    nTest.categoria = param.categoria
    nTest.pregunta = param.pregunta
    nTest.tipo = param.tipo
    nTest.resp = param.resp
    nTest.value = param.value
    nTest.preguntas.push(nTest)
    nTest.save().then(
        testSaved=>{
            res.status(200).send({accion:'newTest',mensaje:'Test creado correctamente'})
        }
    ).catch(err=>{res.status(500).send({accion:'newTest',mensaje:'Error en creacion de test ' +err})})
}

Я делаю nTest.preguntas.push(nTest), чтобы сохранить прегунты и сохранить их, но информацию вэтот объект не появляется, только появляется object [], потому что у preguntas есть другой объект внутри.

Я ожидал увидеть в Compass или Robo3T всю передаваемую мной информацию, но я вижу только информацию, которая не является вложенным объектом,и заголовок вложенных объектов, но пустой.Если вам нужен img захват проблемы в БД, я могу отправить.Надеюсь, вы поможете мне с этой информацией.

1 Ответ

0 голосов
/ 21 апреля 2019

Я отредактировал ваш код в соответствии с заявленными вами схемами, попробуйте:

exports.newTest = ({ body: param }, res) => {
  const nTest = new Test();
  nTest.name = param.name;
  nTest.dName = param.dName;
  nTest.categoria = param.categoria;
  nTest.preguntas = [
    {
      pregunta: param.pregunta,
      tipo: param.tipo,
      respuesta: [
        {
          resp: param.resp,
          value: param.value,
        },
      ],
    },
  ];
  // your saving func
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...