Как мне создать переопределения getter и setter?

#strongloop #loopbackjs

#strongloop #loopbackjs

Вопрос:

Я хотел бы зашифровать поля, подобные этому примеру, с помощью mongoose: https://gist.github.com/kljensen/7505729

Код в приведенной выше ссылке сопоставляет поле с пользовательской decrypt() функцией для get и encrypt() функцией для set .

Это приводит к тому, что значение обычного текста шифруется при сохранении и расшифровывается при извлечении.

Как мне переопределить getters и setters для свойства модели в Loopback?

Ответ №1:

Вы можете настроить setter и getter следующим образом:

 <Model>.setter['myProp'] = function(val) {};
  

Смотрите Пример в loopback’s common/models/user.js

Комментарии:

1. Спасибо Raymond, это позволяет мне правильно работать с сеттером, но я не могу заставить геттер работать. Я проверил исходный код и не могу найти хороших примеров этого. Есть ли какие-нибудь примеры для getter, которые вы можете придумать?

2. Как только я обновил loopback до последней версии, getter все сработало, как ожидалось, просто вернув строку. Спасибо, что наставили меня на путь истинный!

3. @Tom Я исправил ссылку.

4. О примере в пользовательской модели: вместо этого используйте параметр настройки электронной почты this.$email = value this.email = value , чтобы избежать конфликтов имен. Вот специальное исправление в ядре обратной связи для этого: github.com/strongloop/loopback-datasource-juggler/blob/master /…