2014-12-02 82 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