2017-07-03 45 views
1

如何覆蓋整個文檔,而不是隻更新字段? 這裏是我的方法使用權,但現在不工作:如何覆蓋整個文檔,而不是隻更新字段?

updateFilmTitle: function(req, res) { 
    var id = req.params.id; 
    console.log(id); 
    filmTitleModel.findByIdAndUpdate(id, req.body, { 
     overwrite: true 
    }, { 
     new: true 
    }, (error, response) => { 
     if (error) { 
      res.json(error); 
      console.error(error); 
      return; 
     } 
     console.log("filmTitle form has been updated!"); 
     res.json(response); 
     console.log(response); 
    }); 
}, 

這裏我的模型看起來像,

var venueSchema = new Schema({  
    ticketServiceRequired: { type: Boolean, required: true }, 
    filmSettings: { 
     type: { 
      filmContactName: { type: String, required: true }, 
      filmSeatingAmount: { type: Number, required: true }, 
      filmMediaDelivery: { type: Array, required: true }, 
      filmRentalFee: { 
       price: { type: Number, required: true }, 
       type: { type: String, required: true }, 
      }, 
     } 
    }, 

}); 
+0

只是不使用修飾符,例如'$ set',總是執行這種行爲。 'findByIdAndUpdate(id,req.body,{new:true},(err,response)=> {'。但是,除非你知道你確實是這個意思,否則通常不是很好的做法,它不是原子的,因此也不會這也是爲什麼我們說在單個字段上使用'$ set'的原因,有一個「.replaceOne()」,它不允許修飾符,特別是當你打算這樣一個目的,但這不會返回修改後的文件。 –

+0

findByIdAndUpdate(id,req.body,{new:true},(err,response)=> { 這個dint覆蓋文件:( – kaws

+0

It對於我們其他人來說,你還有其他的問題,正如我在其他問題上已經指出的那樣, –

回答

0

newoverwrite都是選項,所以它應該是這樣的:

filmTitleModel.findByIdAndUpdate(id, req.body, { 
    overwrite : true, 
    new  : true 
}, (error, response) => { ... }); 
+0

謝謝羅伯特。上帝祝福你。 – kaws

相關問題