Есть ли правильный метод очистки данных для безсерверных - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время я использую функцию для очистки данных, поступающих в функции без сервера, с помощью этого метода.

const createDOMPurify = require('dompurify');
const { JSDOM } = require('jsdom');

// Prepare DOMPurify
const { window } = new JSDOM('');
const DOMPurify = createDOMPurify(window);
// HTML & Mongo sanitization
// Go through each value in an object and purify them. If the value is an object, Ouroboros!!!
const dataSanitizer = data => {
  const sanitizedObject = {};

  Object.keys(data).forEach(key => {
    const value = data[key];

    if (!/^\$/.test(key)) {
      // Mongo sanitization
      if (typeof value === 'object') {
        // Ouroboros!!!

        const val = dataSanitizer(value);
        sanitizedObject[key] = val;
      } else {
        //
        sanitizedObject[key] = DOMPurify.sanitize(value, { ALLOWED_TAGS: [] }); // HTML sanitization
      }
    }
  });

  return sanitizedObject;
};

module.exports = dataSanitizer;

, но этот сценарий является проблематичным, когда я пытаюсь сохранить данные, содержащие массивы, в базу данных mongo.,потому что, если объект содержит массивы, он меняет форму массива следующим образом.

{ fruits: [Apple,Orange] } до {fruits:{ '1': apple, '2': Orange }

Есть ли правильный путь?промышленный стандарт?очистить данные, поступающие на серверные функции?или как мне исправить эту функцию?

...