Partage
  • Partager sur Facebook
  • Partager sur Twitter

findByIdAndUpdate Mangoose

    17 avril 2019 à 23:10:53

    Bonjour,

    J'essaie actuellement de faire un algo pour remplir un tableau de 1. Mon tableau est défini par :

    const content = new Array(content_size)
    
    for (let i = 0; i < content_size; i++) {
         content[i] = new Array(content_size)
         content[i].fill(0)
    }

    avec content_size = 100.

    Ce que j'aimerais faire c'est avec la fonction findByIdAndUpdate() de mangoose, remplir ce tableau qui est dans Mongo, que avec des 1

    Merci d'avance pour votre aide,

    Cordialement,

    Benjamin

    • Partager sur Facebook
    • Partager sur Twitter
    benbouil
      18 avril 2019 à 13:31:12

      Bonjour,

      Es-tu sur qu'il existe une méthode findByIdAndUpdate ? Moi, je n'en vois pas : https://mongoosejs.com/docs/api.html#Query

      Tu peux par contre utiliser la méthode findOneAndUpdate.

      Si tu veux remplir ton tableau avec des 1, c'est Array.fill(1) plutôt que Array.fill(0).

      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2019 à 16:37:53

        piero5673 a écrit:

        Bonjour,

        Es-tu sur qu'il existe une méthode findByIdAndUpdate ? Moi, je n'en vois pas : https://mongoosejs.com/docs/api.html#Query

        Tu peux par contre utiliser la méthode findOneAndUpdate.

        Si tu veux remplir ton tableau avec des 1, c'est Array.fill(1) plutôt que Array.fill(0).

        Bonjour,

        Merci pour votre réponse.

        Je l'ai trouvé ici : https://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate

        De plus, voici la fonction que j'utilise aujourd'hui :

        data.Server.findById(server_id, (err, server) => {
            if(server){
                const size = server.options.size
        
                // Content reset
                server.content = server.content.map(() => {
                    content = new Array(size)
                    return content.fill(1)
                })
        
        
                server.updated_at = new Date(),
                
                server.save(() => {
                    callback(true)
                })
            }else{
                callback(false)
            }
        })

        Or d'après mangoose, le findAndModify est deprecated. Je voulais donc changer.

        Pouvez vous m'aider ?


        • Partager sur Facebook
        • Partager sur Twitter
        benbouil
          23 avril 2019 à 14:46:53

          Tu peux faire un truc comme ça si la taille de ton tableau n'est pas dans ta db :

          const arraySize = 10;
          const update = {
            $set: {
              "content.$[]": new Array(arraySize).fill(1),
              updated_at: new Date(),
            }
          };
          data.Server.updateMany({}, update, () => {
            //callback
          });

          sinon dur de te proposer autre chose.

          • Partager sur Facebook
          • Partager sur Twitter
            25 avril 2019 à 22:20:55

            piero5673 a écrit:

            Tu peux faire un truc comme ça si la taille de ton tableau n'est pas dans ta db :

            const arraySize = 10;
            const update = {
              $set: {
                "content.$[]": new Array(arraySize).fill(1),
                updated_at: new Date(),
              }
            };
            data.Server.updateMany({}, update, () => {
              //callback
            });

            sinon dur de te proposer autre chose.

            Merci beaucoup, dernière question : Si jamais la taille du tableau est enregistrer dans la base de donnée comment puis-je faire pour récupérer cette valeur et l'utiliser dans la même requête .?

            Merci !

            • Partager sur Facebook
            • Partager sur Twitter
            benbouil
              29 avril 2019 à 11:21:48

              Mongodb ne fais pas ça. Si tu veux une info qui est dans la db il faut faire une requête pour aller chercher cette info.
              • Partager sur Facebook
              • Partager sur Twitter

              findByIdAndUpdate Mangoose

              × 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