Ответ 1
псевдо свойства
Были бы свойства, которые с точки зрения пользователя выглядят как обычные свойства объекта, но не существуют в базе данных. Возьмем, например, пользовательский объект, который имеет имена и имена. Затем вы можете создать setname setter:
var foo = sequelize.define('foo', {
..
}, {
getterMethods: {
fullName: function () {
return this.getDataValue('firstName') + ' ' + this.getDataValue('lastName')
}
},
setterMethods: {
fullName: function (value) {
var parts = value.split(' ')
this.setDataValue('lastName', parts[parts.length-1])
this.setDataValue('firstName', parts[0]) // this of course does not work if the user has several first names
}
}
})
Когда у вас есть пользовательский объект, вы можете просто сделать
console.log(user.fullName)
Чтобы просмотреть полное имя пользователя. Геттер затем вызывается за кулисами.
Аналогично, если вы определяете метод setter для полного имени, вы можете сделать
user.fullName = 'John Doe'
который затем разделил бы переданную строку на две части и сохранил их в имени и фамилии. (см. упрощенный пример выше)
Защитить свойства
@ahiipsa уже послужил хорошим примером этого. Getters вызывается, когда вы выполняете user.toJSON(), поэтому вы можете использовать геттеры для простого удаления конфиденциальных данных перед отправкой пользователю.