2017-02-10 4 views
1

das ist meine Buchung SchemaPush Objektarray in mongodb mit Mungo

const mongoose = require('mongoose') 
const schema = mongoose.Schema; 

let booking = { 
    statusNumber: { type: Number }, 
    service: { 
     hair: { 
      avaliable: { type: Number }, 
      accepted: { type: Number }, 
      acceptedBy: [{ 
       artistId: { type: String }, 
       noOfServices: { type: Number } 
      }] 
     }, 
     makeUp: { 
      avaliable: { type: Number }, 
      accepted: { type: Number }, 
      acceptedBy: [{ 
       artistId: { type: String }, 
       noOfServices: { type: Number } 
      }] 
     }, 
    } 
} 
module.exports = mongoose.model('booking', booking) 

Ich versuche, meine Buchung mit folgendem Code

const acceptBooking = { 
    method: "POST", 
    path: "/artist/acceptBooking", 
    handler: (req, res) => { 
     console.log(req.payload) 
     services.booking.get({ _id: req.payload.bookingId }, (err, result) => { 
      if (err || result.lenght == 0) { 
       res("error") 
      } else { 
       let hairAcceptedBy = { 
        artistId: req.payload.techId, 
        noOfServices: req.payload.hair 
       } 
       let makeUpAcceptedBy = { 
        artistId: req.payload.techId, 
        noOfServices: req.payload.makeUp 
       } 
       console.log(hairAcceptedBy) 
       console.log(makeUpAcceptedBy) 
       let updateObject = { 
        service: { 
         hair: { 
          avaliable: result[0].service.hair.avaliable - req.payload.hair, 
          accepted: (result[0].service.hair.accepted == undefined ? 0 : result[0].service.hair.accepted) + req.payload.hair, 
          $push:{acceptedBy: hairAcceptedBy} 
         }, 
         makeUp: { 
          avaliable: result[0].service.makeUp.avaliable - req.payload.makeUp, 
          accepted: (result[0].service.makeUp.accepted == undefined ? 0 : result[0].service.makeUp.accepted) + req.payload.makeUp, 
          $push:{acceptedBy: makeUpAcceptedBy} 
         } 
        } 
       } 

       services.booking.update({ _id: req.payload.bookingId }, updateObject, (err, affected, result) => { 

        console.log("AFFECTED>>>>>", affected) 
        console.log("RESULT>>>>>", result); 
        res("booking done") 
       }) 

      } 
     }) 

und Funktion sieht mein Update zu aktualisieren, wie

exports.update = (data, updateData, callback) => { 
    console.log('mongo log for update function', data) 
    modelUser.update(data, updateData, callback); 

} 

meine Update-Funktion funktioniert und Aktualisierung vorhanden und akzeptiert, aber nicht drücken ing in acceptedBy Array

Antwort

0

diese Methode funktioniert für mich, können Sie diese verwenden

modelUser.findByIdAndUpdate(
     info._id, 
     {$push: {"messages": {title: title, msg: msg}}}, 
     {safe: true, upsert: true, new : true}, 
     function(err, model) { 
      console.log(err); 
     } 
    ); 
+0

habe ich versucht, dies aber nicht funktioniert –

+0

können Sie diesen Link verweisen http://stackoverflow.com/questions/15621970/pushing- Objekt-in-Array-Schema-in-Mungo habe ich von hier aus probiert und arbeite für mich. –

+0

funktioniert nicht Ich denke, das Hauptproblem ist, dass ich 2 Arrays in der gleichen Abfrage drängen. –