2
votes

Je définis un schéma imbriqué, lorsque je remplis les entrées, il ne renvoie rien et ne sauvegarde pas dans Mongodb

Je définis un schéma imbriqué mais lorsque j'envoie des données d'entrée ne renvoie rien, comment puis-je résoudre ce problème?
voici mon résultat:

const userModels = require('../../models/userModels')

router.post('/', (req , res, next) => {
const user = new userModels({
 _id : new mongoose.Types.ObjectId,
eduLevel :req.body.eduLevel,
eduField :req.body.eduField,
eduInst :req.body.eduInst,
eduCity :req.body.eduCity,
eduDate :req.body.eduDates,
proposalTitle :req.body.proposalTitle,
})
user.save().then(result =>{
    console.log(result)
}).catch (err => {
    console.log(err)
})
    res.status(201).json ({
        message:'handeling post request to /user-api',
        CreatedUserInfo : user
})
})```

voici mon code:

const userEduSchema = new mongoose.Schema(
    {
        eduLevel : String ,
        eduField : String,
        eduInst :String,
        eduCity :String,
        eduDate :Date,
        proposalTitle :String
}
)

const allEduSchema = new  mongoose.Schema(
    {
        bsc: userEduSchema, 
       master: userEduSchema,
        phd:  userEduSchema , 
}
) 

module.exports =  mongoose.model('Users', allEduSchema )

et c'est mon user.js pour enregistrer les données inpute dans MongoDB, je ne sais pas si c'est vrai ou non:

{
    "message": "handeling post request to /user-api",
    "CreatedUserInfo": {
       "_id": "5cbb7fbaad28fe209099a57c"
    }
}


0 commentaires

3 Réponses :


0
votes

Avez-vous défini userSchema ? Sinon, vous essayez d'exporter un schéma qui n'existe pas. Encore une fois, si vous n'avez pas défini userSchema et que vous souhaitez exporter allEduSchema , remplacez la dernière ligne de votre fichier de modèle par ceci:

const EduSchema = mongoose.model("EduSchema", allEduSchema);
module.exports = EduSchema;


8 commentaires

merci, oui je le définis dans mon code et je le modifie dans ma question, toujours il ne renvoie rien :(


Qu'essayez-vous de faire? Avez-vous essayé Users.find ()?


Je veux sauvegarder mes entrées dans la base de données, je les publie mais quand je récupère les données ça ne renvoie rien et dans la base de données il suffit de sauvegarder le _id !!!


Je vois que vous créez un modèle userEduSchema et non un modèle allEduSchema . Vous devez utiliser ceci à la place module.exports = mongoose.model ('Users', userEduSchema) . Vous n'avez pas non plus besoin de créer le _id


Malheureusement non, quand je définis un schéma simple, cela fonctionne, mais quand je définis comme imbriqué, cela ne fonctionne pas. Je pense que le problème est dans mon schéma mais je ne sais pas où !?


Où avez-vous besoin du schéma allEduSchema ?


Je veux utiliser la propriété de _ userEduSchema_ pour bsc ainsi que pour master et doctorat car les propriétés sont les mêmes que j'utilise le schéma imbriqué.


Après avoir créé chaque utilisateur (par exemple const userBsc = new userModels (..) , const userMaster = new userModels (..) et ainsi de suite, vous pouvez créer un nouveau modèle de allEduSchema (par exemple allEduUser) comme ceci const userAllEdu = new allEduUser ({bsc: userBsc, master: userMaster, phd: userPhd}) . Notez que vous devez exporter le le schéma allEduSchema également.



0
votes

Avant de créer un nouvel utilisateur, vous devez avoir besoin de votre schéma d'orignal "Utilisateur". Tout comme Dimitris Tseggenes l'a dit.

J'utilise la fonction async et j'essaye / catch pour gérer ce problème. Peut-être que vous pourriez ....

router.post("/", async (request, response) => {
try {
   const user  = new Users({new user's data here..... });
   const  result = await user.save();
    response.send(result);
} catch (error) {
    response.status(400).send(error);
}

}); p >

try catch pourrait éviter une erreur inattendue et la gérer.


0 commentaires

1
votes

Le problème était de définir la manière d'obtenir les entrées, je dois définir l'objet imbriqué et à l'intérieur de celui-ci mettre les corps de la requête ainsi que je définis le schéma imbriqué.

bsc:{
bscEduLevel :req.body.bscEduLevel,
    bscEduField :req.body.bscEduField,
    bscEduInst :req.body.bscEduInst,
    bscEduCity :req.body.bscEduCity,
    bscEduDate :req.body.bscEduDate,
    bscProposalTitle :req.body.bscProposalTitle
}


0 commentaires