2014-12-02 80 views
5

嘗試使用刪除用戶模型:軟刪除帆/水線

//Hard Delete  
User.destroy({id:userId}, function(err, res){ 
    //Hard Delete 
}) 

我需要做軟刪除用戶型號和當前設置標誌,請將isDeleted爲true刪除和更新文件:

updateUser.isDeleted = true; 
User.update({id:userId}, updateUser, function(err, res){ 
    Update project 
}) 

雖然讀取文件我正在做一個檢查如果isDeleted - 是否真。
是否有任何由Sails或Waterline提供的內置功能,我可以將其配置爲執行軟刪除並避免更新,然後基於isDeleted標誌進行提取?

+0

你可以做到這一點很容易使用如果他們得到它的實施,這個拉請求https://github.com/balderdashy/waterline/pull/525。 – Meeker 2014-12-02 20:04:34

回答

0

帆內沒有軟刪除功能,我懷疑會有。

以下是一個挑戰:爲什麼不寫你自己的? Waterline supports class methods!當然,你必須爲每個模型做一個或者創建一個服務......這可能會更有效。

1

你可以使用beforeFind()爲軟刪除的記錄

模型過濾器生命週期功能:鸚鵡,JS

module.exports = { 
    attributes: { 
     // e.g., "Polly" 
     name: { 
      type: 'string' 
     }, 

     // e.g., 3.26 
     wingspan: { 
      type: 'float', 
      required: true 
     }, 

     // e.g., "cm" 
     wingspanUnits: { 
      type: 'string', 
      enum: ['cm', 'in', 'm', 'mm'], 
      defaultsTo: 'cm' 
     }, 

     // e.g., [{...}, {...}, ...] 
     knownDialects: { 
      collection: 'Dialect' 
     }, 

     isDeleted:{ 
      type:'boolean' 
     } 
    }, 

    beforeFind: function(values, cb) { 
     values.isDeleted = false; 
     cb(); 
    } 
} 

ParrotController.js

module.exports = { 

    // getting default parrots isDeleted = true 
    list: function (req, res) { 

     Parrot 
     .find() 
     .exec(function(err, parrots) { 
      if(err) return res.send({ flag:false, data:[], message:"Error." }); 

      if(parrots && parrots.length){ 
       return res.send({ flag:true, data:parrots, message:"Success." }); 
      } 
      else{ 
       return res.send({ flag:false, data:[], message:"Parrot list is empty." }); 
      } 

     }); 

    } 
}; 
+0

這不是官方實施的帆,rigth?這是一個拉取請求的功能。 – axius 2017-04-17 18:44:48