Ich möchte querystring.stringify für ein Objekt verwenden. Die Anforderungen für die Zeichenfolge sind leicht abweichend, wobei Sternchen, Schrägstriche und Apostrophe alle maskiert sein müssen. Querystring entgeht diesen nicht (normalerweise müssten sie nicht sein), aber die Dokumentation besagt, dass querystring.escape spezifisch angezeigt wird, so dass wir sie mit unserer eigenen Funktion überschreiben können. Die folgend würde für mich arbeiten:Überschreiben von node.js querystring.escape innerhalb eines einzelnen Moduls
querystring.escape = function(str) {
str = encodeURIComponent(str)
.replace(/\*/g, '%2A')
.replace(/\(/g, '%28')
.replace(/\)/g, '%29')
.replace(/'/g, '%27');
return str;
};
Meine einzige Sorge ist, dass, wenn ich das richtig verstehen, könnte dies das Verhalten anderer Module ändern, die auch Abfragezeichenfolgeflag erforderlich machen könnten (mit seiner normalen Escape-Funktion) in der Zukunft. Die Dokumentation von node.js besagt, dass Module nur einmal geladen werden und dass die ursprüngliche Instanz zu nachfolgenden Require-Aufrufen zurückgegeben wird. Gibt es eine Möglichkeit für mich, diese bestimmte Instanz von Querystring eindeutig zu machen?
Offensichtlich kann ich nur einen Wrapper schreiben, der den Ersatz nach einem herkömmlichen Aufruf von querystring.stringify tut, aber ich bin neugierig, weil es mir seltsam schien, dass ein Standard-Knoten-Modul wirklich eine 'globale' Einstellung hätte, es sei denn Es gibt tatsächlich einen Weg, um eine einzigartige Instanz zu erfordern.
Vielen Dank dafür: https://github.com/flatiron/cradle/pull/313/files#diff-73b7aef1765d18b91942243d634fe790R10 – ceremcem