Как обработать массив объектов и сохранить в mongodb - PullRequest
0 голосов
/ 19 апреля 2020

Я использую express и mon goose в моем проекте nodejs. Ниже приведен код для noteModel

const mongoose = require('mongoose')
const noteSchema = new mongoose.Schema({
    notes:[{
        note:{
            type:String,
            required:true,
            trim:true,
        }
    }],
    subject_id:{
        type: mongoose.Schema.Types.ObjectId,
        required: true,
        ref:'Subject'
    },
    user_id:{
        type: mongoose.Schema.Types.ObjectId,
        required: true,
        ref: 'User'
    },
    is_shared:{
        type:Number,
        default:2
    },
    shared_by:{
        type:Number,
        default:0,
    },
},{
    timestamps:true
})

const Note = mongoose.model('Note',noteSchema)

module.exports=Note

Как сохранить массив объектов bolow против поля примечаний. сохранить несколько заметок против одного subject_id

{
    "notes" : "[{note:'test note 1'},{note:'test note 2'}]"
}

1 Ответ

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

У меня есть решение. Теперь оно работает. Теперь я отправляю приведенный ниже массив объектов от почтальона

{
    "subject_id":"5e9a9960fe4ab31f3d2d06a3",
    "notes":[{ "note" : "LoremIpsum dummy text 5"},{"note" : "LoremIpsum dummy text 6"}]

}

и кода внутри моих маршрутов. js выглядит следующим образом:

router.post('/api/note-add',auth,async(req,res)=>{
    const inputnotes = req.body.notes
    const note = await Note.findOne({subject_id:req.body.subject_id, user_id: req.user._id})

    if(!note){
        const newnote = new Note({
            //...req.body,
            subject_id: req.body.subject_id,
            user_id: req.user._id
        })
    }
    try{
        if(!note){
            inputnotes.forEach((noter) => {
                newnote.notes.push(noter)
            })
        }else{
            inputnotes.forEach((noter) => {
                note.notes.push(noter)
            })
        }
        //note.notes.push({note:'test note'})
        await note.save()
        res.send(note)
    }catch(e){
        res.status(400).send(e)
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...