使用Sails和Waterline检查已删除的数据

时间:2014-11-07 15:05:17

标签: node.js sails.js waterline soft-delete

我是SailsJS的新用户并将其用于应用程序,并在删除Project模型时遇到查询问题 项目模型:

name: {
        type: 'string',
        required: true
      },
deletedAt: {
             type: 'datetime'
           },  
deletedBy: {
        model: 'User',
    }  

用户模型:

name: {
        type: 'string',
        required: true
      },
email: {
        type: 'string',
        required: true
      }  

在创建项目时,Sails会自动填写createdAt和updatedAt的数据,我正在为项目Name填写数据。 在删除项目时,我需要进行软删除,其中我将设置deletedAt值和deletedBy值。
在获取所有项目的列表时,不应该删除已删除的项目 我想到的一种方法是使用查询来获取所有项目:

Project.find(function (err, projList) {
..
}  

然后对每个项目进行如下检查:

if (project.hasOwnProperty('deletedBy') && project.deletedBy != null) {
   //Dont include this in list 
  }  

有没有办法,而不是我手动检查已删除的项目,可以使用查询吗?即省略所有已删除的项目 在此先感谢。

1 个答案:

答案 0 :(得分:1)

Project
    .find()
    .where({deletedAt : null})
    .exec(function(err, projectList){
..
});

根据您的型号/数据库,您可能需要使用defaultsTo:null

设置deletedAt
name: {
    type: 'string',
    required: true
},
deletedAt: {
    type: 'datetime',
    defaultsTo: null,
},  
deletedBy: {
    model: 'User',
}