2014-12-02 2 views
5

에서 삭제 :소프트를 사용하여 사용자 모델을 삭제하려고 항해/워터

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

내가 부드러운 사용자 모델을 삭제하고 현재 플래그 삭제 및 업데이트 문서에 참으로 isDeleted를 설정을 수행해야합니다

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

문서를 가져 오는 동안 If isDeleted가 맞는지 확인합니다.
소프트 삭제를 수행하고 업데이트를 피하고 isDeleted 플래그를 기반으로 가져 오기를 구성 할 수있는 돛이나 워터 라인에서 제공하는 내장 기능이 있습니까?

+0

사용이 쉽게 할 수있는 앵무새, JS를 그들이 가져온다면이 pull 요청 https://github.com/balderdashy/waterline/pull/525. – Meeker

답변

0

돛에 소프트 삭제 기능이 내장되어 있지 않을 것입니다.

다음은 도전 과제입니다. 직접 작성하지 않으시겠습니까? Waterline supports class methods! 물론 각 모델에 대해이 작업을 수행하거나 서비스를 만드는 것이 더 효과적 일 수 있습니다.

1

당신은 beforeFind() 소프트 삭제 된 레코드

모델의 필터 수명주기 기능을 사용할 수 있습니다

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

이것은 돛에 의해 공식적으로 구현되지는 않았습니까? 그것은 풀 요청에서 만들어진 기능입니다. – axius

관련 문제