Нужна помощь в разборе данных редактора таблиц данных jquery

У меня есть формат данных, который я получаю из редактора таблиц данных jquery Datatables Editor, который похож на приведенный ниже, и мне нужно проанализировать его, чтобы я мог сохранить его в БД, но я не нашел способ сделать это.

 { action: 'edit',
     'data[1][Name]': 'Some Text ',
     'data[1][Rating]': '1',
     'data[1][Division]': 'Some Text '
 } 

Каков наилучший способ для анализа этой формы данных с использованием JavaScript? Библиотека редактора поставляется с библиотекой php для анализа данных, но я использую nodejs для бэкэнда /

1 ответ

Решение

Если вы хотите конвертировать data[] в буквальном смысле, вы можете сделать что-то вроде этого:

var prop, fieldName, literal = {};
for (prop in data) {
    if (prop != 'action') {
        fieldName = prop.match(/\[(.*?)\]/g)[1].replace(/\]|\[/g,'');
        literal[fieldName] = data[prop];
    } 
}

демо. Это произведет буквальное как

{Name: "Some Text ", Rating: "1", Division: "Some Text "}

например, для вставки в mongodb.

Он просто перебирает данные, извлекает каждый #2 [] и взять содержимое этой скобки как имена свойств в литерал. Я вовсе не утверждаю, что это лучший метод.

У меня есть новый и, возможно, немного более систематический подход, который исключает риск использования символов [[]] в регулярных выражениях. Очень простой способ - использовать пользовательский AJAX, я использовал свои собственные данные:

const editor = new $.fn.dataTable.Editor({
    ajax: (method, url, data, success, error) => {           
        $.ajax({
            type: 'POST',
            url: '/updateproductcode',
            data: JSON.stringify(data),
            success: (json) => {
                success(json);
            },
            error: (xhr, error, thrown) => {
                error(xhr, error, thrown);
            }
        });
    },
    table: '#mytable',
    idSrc: 'productcode',
    fields: ...

Затем на стороне сервера вы получаете объект, ключом которого являются ваши строковые данные:

{'{"action":"edit","data":{"08588001339265":{"productcode":"08588001339265","name":"does_not_existasdfadsf","pdkname":"Prokain Penicilin G 1.5 Biotika ims.inj.s.10x1.5MU","suklcode":"0201964","pdkcode":"2895002"}
}:''}

Если вы анализируете ключ этого с JSON.parse(Object.keys(req.body)[0]), вы получите свои результаты:

{ action: 'edit',
  data:
   { '08588001339265':
      { productcode: '08588001339265',
        name: 'does_not_existasdfadsf',
        pdkname: 'Prokain Penicilin G 1.5 Biotika ims.inj.s.10x1.5MU',
        suklcode: '0201964',
        pdkcode: '2895002' } } }
Другие вопросы по тегам