mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-30 18:46:01 +01:00
70 lines
1.5 KiB
JavaScript
70 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
const helpers = module.exports;
|
|
const utils = require('../../utils');
|
|
|
|
helpers.noop = function () {};
|
|
|
|
helpers.toMap = function (data) {
|
|
var map = {};
|
|
for (var i = 0; i < data.length; i += 1) {
|
|
map[data[i]._key] = data[i];
|
|
delete data[i]._key;
|
|
}
|
|
return map;
|
|
};
|
|
|
|
helpers.fieldToString = function (field) {
|
|
if (field === null || field === undefined) {
|
|
return field;
|
|
}
|
|
|
|
if (typeof field !== 'string') {
|
|
field = field.toString();
|
|
}
|
|
// if there is a '.' in the field name it inserts subdocument in mongo, replace '.'s with \uff0E
|
|
return field.replace(/\./g, '\uff0E');
|
|
};
|
|
|
|
helpers.serializeData = function (data) {
|
|
const serialized = {};
|
|
for (const field in data) {
|
|
if (data.hasOwnProperty(field) && field !== '') {
|
|
serialized[helpers.fieldToString(field)] = data[field];
|
|
}
|
|
}
|
|
return serialized;
|
|
};
|
|
|
|
helpers.deserializeData = function (data) {
|
|
const deserialized = {};
|
|
for (const field in data) {
|
|
if (data.hasOwnProperty(field)) {
|
|
deserialized[field.replace(/\uff0E/g, '.')] = data[field];
|
|
}
|
|
}
|
|
return deserialized;
|
|
};
|
|
|
|
helpers.valueToString = function (value) {
|
|
return String(value);
|
|
};
|
|
|
|
helpers.buildMatchQuery = function (match) {
|
|
let _match = match;
|
|
if (match.startsWith('*')) {
|
|
_match = _match.substring(1);
|
|
}
|
|
if (match.endsWith('*')) {
|
|
_match = _match.substring(0, _match.length - 1);
|
|
}
|
|
_match = utils.escapeRegexChars(_match);
|
|
if (!match.startsWith('*')) {
|
|
_match = `^${_match}`;
|
|
}
|
|
if (!match.endsWith('*')) {
|
|
_match += '$';
|
|
}
|
|
return _match;
|
|
};
|