Add comma to escapeFieldName for NeDBv4 (#6803)

PTR committed Feb 22, 2025 at 17:59 UTC e0e8a3fcaa2947b8c77fb5eb6c7a3f286782c42e
1 file changed +4 -4
common.js
+4 -4
@@ -155,12 +155,12 @@ module.exports.objKeysToLower = function (obj, exceptions, parent) {
155 return obj;
156 };
157
158 -// Escape and unescape field names so there are no invalid characters for MongoDB
159 -module.exports.escapeFieldName = function (name) { if ((name.indexOf('%') == -1) && (name.indexOf('.') == -1) && (name.indexOf('$') == -1)) return name; return name.split('%').join('%25').split('.').join('%2E').split('$').join('%24'); };
160 -module.exports.unEscapeFieldName = function (name) { if (name.indexOf('%') == -1) return name; return name.split('%2E').join('.').split('%24').join('$').split('%25').join('%'); };
158 +// Escape and unescape field names so there are no invalid characters for MongoDB/NeDB ("$", ",", ".", see https://github.com/seald/nedb/tree/master?tab=readme-ov-file#inserting-documents)
159 +module.exports.escapeFieldName = function (name) { if ((name.indexOf(',') == -1) && (name.indexOf('%') == -1) && (name.indexOf('.') == -1) && (name.indexOf('$') == -1)) return name; return name.split('%').join('%25').split('.').join('%2E').split('$').join('%24').split(',').join('%2C'); };
160 +module.exports.unEscapeFieldName = function (name) { if (name.indexOf('%') == -1) return name; return name.split('%2C').join(',').split('%2E').join('.').split('%24').join('$').split('%25').join('%'); };
161
162 // Escape all links, SSH and RDP usernames
163 -// This is required for databases like NeDB that don't accept "." as part of a field name.
163 +// This is required for databases like NeDB that don't accept "." or "," as part of a field name.
164 module.exports.escapeLinksFieldNameEx = function (docx) { if ((docx.links == null) && (docx.ssh == null) && (docx.rdp == null)) { return docx; } return module.exports.escapeLinksFieldName(docx); };
165 module.exports.escapeLinksFieldName = function (docx) {
166 var doc = Object.assign({}, docx);