2017-09-24 1 views
0

Salut Quelqu'un peut-on expliquer ce qui ne va pas avec mon code de contrôleur Je tente de modifier un présent élément dans un tableau en utilisant le contrôleur code.It ne donne l'erreur, ni mettre à jour mon dbMongoDB - Impossible de mettre à jour tableau

Modèle

var localTransportSchema = new Schema({ 

       name: { type: String, required: false, trim: true }, 
       contact: { 
        addressLine1: { type: String, required: false },   
        serviceActiveFlag: { type: String, required: false, enum: ['Y', 'N'] }, 
      }, 
      vehicle: [{ 
       vehicleType:{ type: String, required: false, enum: ['sedan', 'hatchback', 'suv', 'mpv', 'luxury'] }, 
       activeFlag:{type: String, required: false, enum: ['Y', 'N']}   
      }] 
     }); 
     module.exports.transportModel = mongoose.model(collection, localTransportSchema); 

contrôleur

transportModel.findOne({ "name": req.body['providerName'], "contact.postalCode": parseInt(req.body['postalCode']), "vehicle": { $elemMatch: { "vehicleType": req.body['vehicleType'] } } }, 
      function (err, doc) { 
       if (err) { 
        logger.error("Error while updating record : - " + err.message); 
        return reject(res.status(409).json({ 
         "Message": "Error while updating transport details for provider " + req.body['providerName'] + " in transport details table" 
        })); 
       } else if (doc === null) { 
        logger.error("Error while updating record in transport details : - unable to update database"); 
        return reject(res.status(409).json({ 
         "Message": "Error while updating transport details for provider " + req.body['providerName'] + " due to " + err.message 
        })); 
       } else { 

        doc.set({       
         "vehicle.$.activeFlag": req.body['vehicleActiveFlag'] 
        }) 
        //save document 
        doc.save() 
       } 

      }); 

Répondre

0

Essayez d'utiliser une méthode qui findOneAndUpdate retour document mis à jour:

transportModel.findOneAndUpdate({ "name": req.body['providerName'], "contact.postalCode": parseInt(req.body['postalCode']), "vehicle": { $elemMatch: { "vehicleType": req.body['vehicleType'] } } }, {$set: {"vehicle.$.activeFlag": req.body['vehicleActiveFlag']}}, {new: true}, 
      function (err, doc) { 
       if (err) { 
        logger.error("Error while updating record : - " + err.message); 
        return reject(res.status(409).json({ 
         "Message": "Error while updating transport details for provider " + req.body['providerName'] + " in transport details table" 
        })); 
       } else if (doc === null) { 
        logger.error("Error while updating record in transport details : - unable to update database"); 
        return reject(res.status(409).json({ 
         "Message": "Error while updating transport details for provider " + req.body['providerName'] + " due to " + err.message 
        })); 
       } else { 
         console.log(doc); 
         res.status(200).json(doc); 
        } 

      }); 
+0

génial.Merci pour votre aide –