2017-02-10 136 views
1

這是我的預訂模式推對象數組使用貓鼬

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); 

} 

我的更新功能正在工作並更新可用並被接受,但 未推送ING進入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-對象到數組模式在貓鼬我試着從這裏爲我工作。 –

+0

Does'nt工作我認爲主要問題是我在同一個查詢中推送2個數組。 –