Мое приложение получает кодированное значение base64, которое также зашифровывается. Данные могут иметь несколько разных способов, поэтому я хотел создать цепочки, способные сохранить код чистым и модульным.Функции цепочки JavaScript, последние методы возвращают 'undefined'
Я хочу уметь писать: decryptionChain.decodeBase64 (b64Value) .stringToBuffer(). FinallyDecrypt();
Когда я запускаю код, последний метод свойства «finallyDecrypt» возвращается как неопределенный.
Почему метод «finallyDecrypt» возвращается как неопределенный? Все остальное работает, и если я запускаю ecryptionChain.decodeBase64 (b64Value) .stringToBuffer(), я возвращаю Buffer, которого я ожидаю. Это происходит только тогда, когда finallyDecrypt прикован в том, что я ошибаюсь.
Вот код:
function decrypt(encrypted) {
var decipher = crypto.createDecipheriv(algorithm, password, iv);
decipher.setAuthTag(encrypted.tag);
var dec = decipher.update(encrypted.content, 'hex', 'utf8');
dec += decipher.final('utf8');
return dec;
}
var decryptionChain = {
currentValue:"",
decodeBase64: function (encryptedValue){
this.currentValue = new Buffer(encryptedValue.toString(), "base64");
return this;
},
stringToBuffer: function() {
if (this.currentValue) {
myBuffer = JSON.parse(this.currentValue, function (key, value) {
return value && value.type === 'Buffer'
? new Buffer(value.data)
: value;
});
}
return myBuffer;
},
finallyDecrypt : function(myBuffer){
if(myBuffer){
decrypt(myBuffer);
}
return this;
}
};
Пожалуйста, не делайте этого. С предлагаемым дизайном можно легко вызвать 'decryptChain.stringToBuffer(). DecodeBase64 (b64Value)' или 'decryptChain.finallyDecrypt(). FinallyDecrypt()', который просто не имеет смысла. Сделайте каждый метод возвратом другого объекта. – Bergi
Хммм на основе данных, которые должны работать. Можете ли вы предоставить пример [jsfiddle] (http://jsfiddle.net)? – EvilZebra
Его node.js, Fiddle не поддерживает его. Не уверен, есть ли скрипт как служба для узла. Быстрый поиск в Google не превратил ничего, что действительно сработало. – Cyph