Могут ли методы получения / установки метода mongodb получить доступ к документу? - PullRequest
1 голос
/ 12 марта 2020

Могут ли методы установки для получения в Mon goose получить доступ к атрибутам самого документа? Например, их поведение может зависеть от того, должен ли контент быть сжатым или нет. Здесь я просто придумываю this, предполагая, что это может быть связано с документом, но я не могу с готовностью увидеть документы на этот счет:

function compress(val) {
     if (this.compressed) return zlib.gzipSync(val);
     else return val;
}
function expand(val) {
     if (this.compressed) return zlib.gunzipSync(val);
     else return val;
}

var MyObject = new mongoose.Schema({
  content: {type: mongoose.Schema.Types.Mixed, set: compress, get: expand},
  compressed: {type: Boolean, required: true, default: false}

});

https://mongoosejs.com/docs/2.7.x/docs/getters-setters.html

1 Ответ

0 голосов
/ 24 марта 2020

Пн goose Документация по геттерам / сеттерам

Ссылка, которую вы разместили, относится к версии 2.7 Пн goose, выпущенной в 2012 году. Эквивалентная страница в новой документации отвечает на большинство ваших вопросов.

На остальные можно ответить, обратившись к документации MDN для получателей и установщиков . Получатели и установщики схемы Mon goose работают так же, как Javascript (за исключением одного, см. note ).

Особенности

this is действительно привязан к документу.

Однако получатели не принимают значения. Ваш код, вероятно, должен выглядеть следующим образом

function compress(val) {
     if (this.compressed) return zlib.gzipSync(val);
     else return val;
}
function expand() {
     if (this.compressed) return zlib.gunzipSync(this.content);
     else return this.content;
}

var MyObject = new mongoose.Schema({
  content: {type: mongoose.Schema.Types.Mixed, set: compress, get: expand},
  compressed: {type: Boolean, required: true, default: false}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...