Строковый срез, а не панель инструментов D3 - PullRequest
0 голосов
/ 13 марта 2019

Создание панели D3 с использованием статистических данных awsconsole. Данные находятся в MongoDB и, похоже, загружаются правильно при маршрутизации в браузер.

Однако при попытке загрузить данные через панель инструментов D3 в консоли генерируется следующая ошибка

Uncaught TypeError: **string.slice is not a function**
at **d3_time_parseFullYear (d3.js:2716)**
at d3_time_parse (d3.js:2519)
at Function.format.parse (d3.js:2495)

Попробовал различные форматы безуспешно, панель инструментов загружается, но данные отсутствуют из-за ошибки среза

Пример фрагмента queue.js

queue()
    .defer(d3.json, "/donorschoose/projects")
    .defer(d3.json, "static/geojson/us-states.json")
    .await(makeGraphs);

function makeGraphs(error, projectsJson, statesJson) {

    //Clean projectsJson data
    var donorschooseProjects = projectsJson;
    // var dateFormat = d3.time.format("%Y-%m-%d");
    var dateFormat = d3.time.format("%Y-%m-%d %H:%M:%S");
    // var dateFormat = d3.time.format("%Y-%m-%d %X");
    donorschooseProjects.forEach(function(d) {
        d["date_posted"] = dateFormat.parse(d["date_posted"]);
        d["date_posted"].setDate(1);
        d["total_donations"] = +d["total_donations"];
    });

Пример данных Монго (с отметкой времени)

{
"_id" : ObjectId("5c8933d131a8834ae488c4d6"),
"date_posted" : ISODate("2003-06-18T00:00:00Z"),
"date_completed" : ISODate("2004-01-23T00:00:00Z"),
"date_thank_you_packet_mailed" : ISODate("2004-02-26T00:00:00Z"),
"date_expiration" : ISODate("2004-06-16T00:00:00Z")
}

Пример фрагмента D3.js

}
  function d3_time_parseWeekNumberMonday(date, string, i) {
    d3_time_numberRe.lastIndex = 0;
    var n = d3_time_numberRe.exec(string.slice(i));
    return n ? (date.W = +n[0], i + n[0].length) : -1;
  }
  function d3_time_parseFullYear(date, string, i) {
    d3_time_numberRe.lastIndex = 0;
    var n = d3_time_numberRe.exec(string.slice(i, i + 4));
    return n ? (date.y = +n[0], i + n[0].length) : -1;
  }
  function d3_time_parseYear(date, string, i) {
    d3_time_numberRe.lastIndex = 0;
    var n = d3_time_numberRe.exec(string.slice(i, i + 2));
    return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
  }
  function d3_time_parseZone(date, string, i) {
    return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, 
    i + 5) : -1;
  }
  function d3_time_expandYear(d) {
    return d + (d > 68 ? 1900 : 2e3);
  }
...