不会调用Waterline Lifecycle Callbacks

时间:2015-03-26 10:35:42

标签: node.js sails.js waterline

我目前正在运行Sails.js v.1.11.0和Waterline v.0.10.0b。

我有一个带有两个生命周期回调的用户模型,在我销毁用户时不会被调用。我尝试了user.destroy()以及User.destroy(id)。我应该以某种方式明确地调用那些afterDestroy回调,还是应该使用某个设置激活它们?我的数据库是通过sails-mysql的MySQL。任何帮助将非常感谢!

用户模型

module.exports = {
  tableName: 'user',
  attributes: {
    name: {
      type: 'string',
      required: true
    },
    lastName: {
      type: 'string',
      required: true
    },

    ...

    beforeDestroy: function(destroyedRecord, next) {
      console.log('!!!!!destroyedRecord', destroyedRecord);
      next();
    },

    afterDestroy: function(destroyedRecord, next) {
      console.log('!!!!!destroyedRecord', destroyedRecord);
      next();
    },

    toJSON: function () {
      var obj = this.toObject();
      delete obj.password;
      return obj;
    }
  },

  getFullName: function (user) {
    return user.name + ' ' + user.lastName;
  }

};

删除功能

remove: function (req, res, next) {

  var id = req.param('id');

  User.findOne({'id' : id}).then(function(user){
      user.destroy();
      res.send(200);
  }).catch(function(err){
      console.log(err);
      res.send(400);
  });

1 个答案:

答案 0 :(得分:2)

回调在属性之外,在旁注上你可以将fullname放在属性中,如下所示。

module.exports = {
  tableName: 'user',
  attributes: {
    name: {
      type: 'string',
      required: true
    },
    lastName: {
      type: 'string',
      required: true
    },

    fullName: function () {
      return this.name + ' ' + this.lastName;
    }


  },

  beforeDestroy: function(destroyedRecord, next) {
    console.log('!!!!!destroyedRecord', destroyedRecord);
    next();
  },

  afterDestroy: function(destroyedRecord, next) {
    console.log('!!!!!destroyedRecord', destroyedRecord);
    next();
  },

  toJSON: function () {
    var obj = this.toObject();
    delete obj.password;
    return obj;
  }

};