2017-05-05 2 views
0

Wenn ich ein neues "Experience" -Dokument mit dem Modell Experience speichern, wird die Erfahrung _id nicht im Dokument des Benutzers gespeichert. So bleibt mein "Erfahrungs" -Array im Benutzerdokument leer. Warum?Speichern eines Dokuments in Mongoose, Referenz-ID wird nicht im zweiten Dokument gespeichert

const mongoose = require('mongoose'); 

const ExperienceSchema = mongoose.Schema({ 
    name: String, 
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, 
    reviews: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Review' }], 
    categories: [{ type: String }], 
    }); 

module.exports = mongoose.model('Experience', ExperienceSchema); 

=========================================== ===

const mongoose = require('mongoose'); 

const UserSchema = mongoose.Schema({ 
    name: String, 
    experiences: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Experience' }], 
    }); 

module.exports = mongoose.model('User', UserSchema); 

======================================== =====

// Update experience to database 
router.post('/:id', (req, res, next) => { 
    const idexp = req.params.id; 

    const newExperience = { 
    name: req.body.name, 
    user: req.user._id, 
    }; 
    Experience.findOneAndUpdate({ _id: idexp }, newExperience, (err, result) => { 
    if (err) { 
     return res.render(`/${idexp}/edit`, { errors: newExperience.errors }); 
    } 
    return res.redirect(`/experiences/${idexp}`); 
    }); 
}); 

Antwort

0

Hier ist die Lösung ... ich $ Push zu verwenden benötigt, um das Benutzerdokument mit der Erfahrung ID zu aktualisieren, bevor Sie die Website zu machen.

Experience.findOneAndUpdate({ _id: idexp }, newExperience, (err, result) => { 
    if (err) { 
     return res.render('experiences/edit', { errors: newExperience.errors }); 
    } 
    User.findByIdAndUpdate({ _id: req.session.passport.user._id }, { $push: { experiences: idexp } }, (err) => { 
     if (err) { 
     next(err); 
     } else { 
     return res.redirect(`/experiences/${idexp}`); 
     } 
    }); 
    }); 
1

die experiences ist das Teildokument von user Schema. Wenn Sie also experiences speichern, wird user nicht gespeichert. Wenn Sie jedoch user speichern, sollte die experience gespeichert werden.

Refer this subdocs documentation

Verwandte Themen