在beforeValidate转换为' 0000-00-00'并抛出错误

时间:2014-05-30 21:01:22

标签: validation date datetime sails.js waterline

我已经非常广泛地了解如何处理与日期相关的问题,但我似乎无法在任何地方找到合适的答案。

我正在使用SailsJS(beta)和Waterline作为数据处理程序。我的情况如下:

我的用户模型是这样的:

module.exports = {

  attributes: {

    (.. some attributes ..),
    birthDate: {
      type: 'date',
      required: false
    }

  },

  // Modifies user input before validation
  beforeValidation: function(user, cb){
    // Make sure birthdate is not saved as 0000-00-00
    if(!user.birthDate || user.birthDate == '0000-00-00'){
      user.birthDate == null;
    }
    cb(null, user);
  },
}

beforeValidation() - 函数会触发它,但我总是会抛出一个错误,如下所示。对于Waterline模型中的datedatetime类型,似乎就是这种情况。

warn: Error (E_VALIDATION) :: 1 attribute is invalid
at WLValidationError.WLError (C:\web\node_modules\sails\node_modules\waterline\lib\waterline\error\WLError.js:33:18)
at new WLValidationError (C:\web\node_modules\sails\node_modules\waterline\lib\waterline\error\WLValidationError.js:20:28)
at C:\web\node_modules\sails\node_modules\waterline\lib\waterline\query\validate.js:44:43
at allValidationsChecked (C:\web\node_modules\sails\node_modules\waterline\lib\waterline\core\validations.js:181:5)
at done (C:\web\node_modules\sails\node_modules\waterline\node_modules\async\lib\async.js:128:19)
at C:\web\node_modules\sails\node_modules\waterline\node_modules\async\lib\async.js:25:16
at C:\web\node_modules\sails\node_modules\waterline\lib\waterline\core\validations.js:162:23
at Object.async.each (C:\web\node_modules\sails\node_modules\waterline\node_modules\async\lib\async.js:114:20)
at validate (C:\web\node_modules\sails\node_modules\waterline\lib\waterline\core\validations.js:142:11)
at C:\web\node_modules\sails\node_modules\waterline\node_modules\async\lib\async.js:118:13

Invalid attributes sent to User:
  birthDate
    `undefined` should be a date (instead of "0000-00-00", which is a string)

如何使用sailsjs / waterline在数据库中将birthDate设置为null? 我希望有人可以提供帮助:)

1 个答案:

答案 0 :(得分:2)

更改

cb(null, user);

cb();

你在if语句中有一个类型错误:

user.birthDate == null;

必须是

user.birthDate = null;