Функция для создания нового JSON Undefined - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть три файла JSON. Моя цель - создать новый, комбинируя данные из них определенным образом.

В лучшем случае я думаю, что у меня правильная логика и синтаксис для объединения данных (пожалуйста, исправьте меня, если не так), но:

  • Я не знаю точно, что, если вообще, return в функции.
  • Я не знаю, как в конечном итоге написать новый файл, даже если функция верна и завершена.

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

Даже если мне это удастся, последние две строки в моем коде полностью и правильно представляют собой способ записи файла?

Я пробовал три варианта, единственное отличие состоит в том, кто я есть и не возвращаюсь.

Код:

var fs = require('fs');
const safeJsonStringify = require('safe-json-stringify');

var asanaProjects = require("C:/Users/GabrielRivera/asana/Asana Projects.json");
var asanaTasks = require("C:/Users/GabrielRivera/asana/Asana Tasks.json");
var asanaAttachments = require("C:/Users/GabrielRivera/asana/Asana Attachments.json");

function buildNewJSON() {
  return asanaProjects.map(project => {
    project.attachments = []
    asanaTasks.map(task => {
      if(project.items.includes(task.__object_id)){
        asanaAttachments.map(attachment => {
          if(task.attachments.includes(attachment.__object_id)){
            project.attachments.push(attachment)
            return project
          }
        })
      }
    })
  })
}

console.log(buildNewJSON())
var asanaData = safeJsonStringify(buildNewJSON());
fs.writeFile("asanaData.json", asanaData);

Результирующий файл JSON: [ноль, ноль, ноль ...]

Код:

function buildNewJSON() {
  return asanaProjects.map(project => {
    project.attachments = []
    asanaTasks.map(task => {
      if(project.items.includes(task.__object_id)){
        asanaAttachments.map(attachment => {
          if(task.attachments.includes(attachment.__object_id)){
            project.attachments.push(attachment)
          }
        })
      }
    })
  })
}

console.log(buildNewJSON())
var asanaData = safeJsonStringify(buildNewJSON());
fs.writeFile("asanaData.json", asanaData);

Результирующий файл JSON: [ноль, ноль, ноль ...]

Код:

function buildNewJSON() {
  asanaProjects.map(project => {
    project.attachments = []
    asanaTasks.map(task => {
      if(project.items.includes(task.__object_id)){
        asanaAttachments.map(attachment => {
          if(task.attachments.includes(attachment.__object_id)){
            project.attachments.push(attachment)
            return project
          }
        })
      }
    })
  })
}

console.log(buildNewJSON())
var asanaData = safeJsonStringify(buildNewJSON());
fs.writeFile("asanaData.json", asanaData);

Результирующий файл JSON: undefined

1 Ответ

0 голосов
/ 04 ноября 2018

Обновите ваш buildNewJson метод.

function buildNewJSON() {
  return asanaProjects.reduce(function(output,project){
        project.attachments = [];
      asanaTasks = asanaTasks.reduce(function(tasks,task){
         if(project.items.includes(task.__object_id)){
           asanaAttachments = asanaAttachments.reduce(function(attachments,attachment){
            if(task.attachments.includes(attachment.__object_id)){
               project.attachments.push(attachment);
            }
            attachments.push(attachment);
            return attachments;
           },[]);
         }
         tasks.push(task);
         return tasks;
      },[]);

      output.push(project);
      return output;
  },[]);
}
...