2017-02-10 2 views
1

это мое бронирование схематолчок массив объектов в MongoDB используя мангуст

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) 

Я пытаюсь обновить свой заказ, используя ниже код

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") 
       }) 

      } 
     }) 

и моя функция обновления выглядит

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

} 

моя функция обновления работает и обновляется доступная и принятая, но не толкает ать в acceptedBy массив

ответ

0

этот метод работает для меня, вы можете использовать этот

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

я попытался это, но не работает –

+0

вы можете обратиться по этой ссылке http://stackoverflow.com/questions/15621970/pushing- object-in-array-schema-in-mongoose, который я попробовал отсюда и работает для меня. –

+0

Не работает Я думаю, что основная проблема заключается в том, что я нажимаю 2 массива в одном запросе. –