Partage
  • Partager sur Facebook
  • Partager sur Twitter

NODE Ajouter l'id de l'élément crée dans les users

    8 avril 2021 à 15:50:34

    Bonjour à tous, 

    Je suis bloqué dans mon projet, Je souhaite pouvoir créé des équipes et ajouter l'id de celle-ci pour l'ajouter dans la table user. lors de l'envoi de la requête, l'équipe s'ajoute bien en base de données mais ne modifie pas la table utilisateur.

    je récupère se message dans la console de postman : 

    {"message":{"driver":true,"name":"MongoError","index":0,"code":11000,"keyPattern":{"name":1},"keyValue":{"name":"FCB"}}}

    Voici des extraits de mon code : 

    team.model.js :

    const mongoose = require('mongoose');
    
    const TeamSchema = new mongoose.Schema(
        {
            //-----------Team form -------------
            name: {
                type: String,
                required: true,
                minlength: 3,
                maxlength: 15,
                unique: true,
                trim: true
            },
    
            cityId: {
                type: String,
                required: true,
            },
    
            leadId: {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'User'
            },
        },
        {
            timestamps: true
        }
    );
    
    module.exports = mongoose.model('Team', TeamSchema);


    user.model.js :

    const mongoose = require('mongoose');
    const { isEmail } = require('validator');
    const bcrypt = require('bcrypt');
    
    
    const userSchema = new mongoose.Schema(
        {
            username: {
                type: String,
                required: true,
                minlength: 3,
                maxlength: 55,
                unique: true,
                trim: true,
            },
    
            email: {
                type: String,
                required: true,
                validate: [isEmail],
                lowercase: true,
                unique: true,
                trim: true,
            },
    
            password: {
                type: String,
                required: true,
                max: 1024,
                minlength: 8,
            },
    
            picture: {
                type: String,
                default: "./uploads/profil/random-user.png",
            },
    
            bio: {
                type: String,
                max: 1024
            },
    
            team : {type: mongoose.Schema.Types.ObjectId, ref: 'Team'}
        },
        {
            timestamps: true,
        }
    );
    
    // play function before save into DB
    userSchema.pre("save", async function (next) {
        const salt = await bcrypt.genSalt();
        this.password = await bcrypt.hash(this.password, salt);
        next();
    });
    
    
    userSchema.statics.login = async function (email, password) {
        const user = await this.findOne({ email });
        if (user) {
            const auth = await bcrypt.compare(password, user.password);
            if (auth) {
                return user;
            }
            throw Error('incorrect password');
        }
        throw Error('incorrect email')
    };
    
    const UserModel = mongoose.model("User", userSchema);
    
    module.exports = UserModel;

    et voici ma fonction qui est censé créer mon équipe et modifier ma table user :

    module.exports.createTeam = async (req, res) => {
        try {
            console.log(req.params);
            user = req.params;
            id = user.id;
            const { name, cityId } = req.body;
            const team = await TeamModel.create({
                name,
                cityId,
                user: id
            });
    
            await team.save();
    
            const userById = await UserModel.findById(id);
            userById.team.push(team)
        await userById.save();
    
        return res.send(userById);
    
        } catch (err) {
            return res.status(400).json(err);
        } 
    };

    je code actuellement toute ma partie back-end avant de passer a la partie front, je réalise toutes mes requête de test dans post Man. 


    • Partager sur Facebook
    • Partager sur Twitter

    NODE Ajouter l'id de l'élément crée dans les users

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown