Проблема с массивом объектов в схеме Мангуста - PullRequest
1 голос
/ 31 марта 2019

У меня проблема с остальными API, основанными на выражении узла и mongodb с mongoose. Думаю, у меня проблема со схемой mongoose для вложенного массива объектов.

используйте новую схему mongoose, тогда есть пустой массив

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const TranslationSchema = new Schema({
    name: {
        type: String,
        required:true
        },
    description: {
        type: String
    },
    laguage_code: {
        type: String,
        required:true
    },
})

const ImagesSchema = new Schema({
    name:{
        type: String
    },
    file_id: {
        type: String
    }
})
const RecipeSchema = new Schema({
    user: {
        type: Schema.Types.ObjectId,
        ref: 'users'
    },
    translations:[TranslationSchema],
    date: {
        type: Date,
        default: Date.now
    },
    images:[ImagesSchema]
})
module.exports = Recipe = mongoose.model("recipes", RecipeSchema);

и api

router.post(
    '/',
    passport.authenticate('jwt', { session:false }),
    (req,res) => {
        const newRecipe = new Recipe({
            user: req.user.id,
            translations:req.body.translations,
            images:req.body.images
        })
        console.log(req.body)
        console.log(newRecipe)
        // newRecipe.save().then(recipe => res.json(recipe))
    }
)

на console.log req.body У меня есть

[Object: null prototype] {
  images: '[{name:\'test\', file_id:\'asd\'}]',
  translations: '[{name:\'asd\', laguage_code:\'pl\'}]' }

, но наconsole.log (newRecipe)

{ _id: 5ca0cc632314cd4368bf42dd,
  user: 5c569f603e811118c83c80d1,
  translations: [],
  date: 2019-03-31T14:19:15.788Z,
  images: [] }

что я делаю не так?

1 Ответ

0 голосов
/ 31 марта 2019

В вашей модели Recipe вы определили translations и images как модели мангустов. Поэтому постарайтесь экспортировать эти модели и построить их. Например:

const translations = new Translation(req.body.translations);
const images = new Image(req.body.images);

А затем попробуйте создать модель следующим образом:

const newRecipe = new Recipe({
    user: req.user.id,
    translations:translations,
    images:images
})

Я надеюсь, что дал вам идею, как попытаться найти ваше решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...