EJS: преобразование массива Javascript в массив JSON и получение ошибки длины недопустимого массива - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь отобразить результаты запроса MySQL с использованием EJS. Запрос возвращает массив в следующей форме:

    [ TextRow {
    'Sample ID': 'S0001',
    'Panel ID': 'P0001',
     Gene: BRAC1,
    'DNA z-score': 0.7
     Chromosome: 11 },
  TextRow {
      'Sample ID': 'S0003',
      'Panel ID': 'P0009',
       Gene: PTEN,
      'DNA z-score': 0.5,
       Chromosome: 5 } ]

У меня есть следующий код EJS для отображения значений в массиве:

<% if(data_json.length) { %>
   <% for(var i = 0; i < data.length; i++) { %>
      <tr>
         <td><%=data_json[i]["Sample ID"]%></td>
         <td><%=data_json[i]["Variant ID"]%></td>
         <td><%=data_json[i].Gene%></td>
         <td><%=data_json[i]["DNA z-score"]%></td>
         <td><%=data_json[i].Chromosome%></td>
      </tr>
   <% } %>

Я преобразовал массив в JSONиспользуя следующий массив:

var data_json = JSON.stringify(data);
console.log(data.length);
console.log(data_json.length);

Однако длина data равна 14314. Длина data_json равна 4682750. Я не уверен, почему длина массива изменилась. Когда я пытаюсь распечатать содержимое массива data_json, я получаю следующую ошибку:

 0: ExitFrame [pc: 0x2c6ff95be3d]
Security context: 0x319ccda70891 <JSObject>
    1: /* anonymous */ [0x319c72c8acc9] [0x319c50c026f1 <undefined>:~29] [pc=0x2c6ffc5b337](this=0x319cc208d461 <JSGlobal Object>)
    2: /* anonymous */ [0x319c72c8ad81] [0x319c50c026f1 <undefined>:32] [bytecode=0x319c30c534c9 offset=50](this=0x319cc208d461 <JSGlobal Object>,locals=0x319c30c7f921 <Object map = 0x319c37bf7b01>,filters=0x319ce927f471 <Object m...

FATAL ERROR: invalid array length Allocation failed - JavaScript heap out of memory
 1: 0x10003d035 node::Abort() [/usr/local/bin/node]
 2: 0x10003d23f node::OnFatalError(char const*, char const*) [/usr/local/bin/node]
 3: 0x1001b8e15 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
 4: 0x100586d72 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/usr/local/bin/node]
 5: 0x10055f54a v8::internal::Factory::NewFixedArrayWithFiller(v8::internal::Heap::RootListIndex, int, v8::internal::Object*, v8::internal::PretenureFlag) [/usr/local/bin/node]
 6: 0x10050699e v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int) [/usr/local/bin/node]
 7: 0x1007a1daf v8::internal::Runtime_GrowArrayElements(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
 8: 0x2c6ff95be3d 
 9: 0x2c6ffc5b337 
Abort trap: 6

Я не уверен, почему я получаю эту ошибку и как ее устранить. Любые идеи приветствуются.

...