Не удается создать вложенный JSON объект - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь создать вложенный объект JSON, используя NodeJS. Я получаю данные с сервера программного обеспечения JIRA и пытаюсь отобразить схему моего приложения. Ниже приведена схема моего приложения.

схема:

Product:
  _id: ObjectId                                
  categories: [Category]
  backlog: [Section]
Category:
  _id: ObjectId                                 
  name: String                                  
  color: String                                 
Section:
  _id: ObjectId                                 
  title: String                                 
  backlogItems: [BacklogItem]
BacklogItem: 
 _id: ObjectId                                 
  productId: ObjectId
  title: String
  description: String
  category: Category
  acceptanceCriteria: [AcceptanceCriterion]
  tasks: [Task]
  notes: [Note]

Я хочу создать одну категорию для задач. Например, если есть две или более проблем из JIRA типа «Epi c», я хочу создать только одну категорию, а затем я хочу создать массив BacklogItems, но он выдает ошибку ниже:

categories: [Category], Category is not defined

Ниже я пытаюсь сделать следующее:

function parseResponse(body) {
  var data = JSON.parse(body);

  result.product = {
    id: ObjectID(),
    categories: [Category],
    backlog: [Section]
  };

  for (var i = 0; i < data.issues.length; i++) {
    var color;
    var categoryName;
    switch (data.issues[i].fields.issuetype.name) {
      case "Story":
        color = "green";
        break;
      case "Epic":
        color = "purple";
        break;
      case "Task":
        color = "blue";
        break;
      case "Bug":
        color = "red";
        break;
    }

    var uniqeCategory = [
      ...new Set(data.issues.map(x => x.fields.issuetype.name))
    ];

    if (uniqeCategory[i] !== data.issues[i].fields.issuetype.name) {
      categoryName = uniqeCategory[i];
    } else {
      categoryName = data.issues[i].fields.issuetype.name;
    }

    console.log(uniqeCategory);

    result.product.backlog.push({
      id: ObjectID(),
      title: "importer",
      backlogItem: []
    });

result.product.backlog.backlogItem.push({
  id: data.total,
  productId: result.product.id,
  title: data.issues[i].fields.summary,
  description: data.issues[i].fields.description,
  category: data.issues[i].fields.issuetype.name,
  acceptanceCriteria: [],
  tasks: [],
  notes: []
});

Может кто-нибудь попытаться сказать мне, что я делаю неправильно, и как я могу создать такой объект?

PS: я только начал работать с NodeJS и пытался изучить его, делая это.

1 Ответ

0 голосов
/ 24 марта 2020

После некоторых попыток я попытался создать объект. Ниже мой код.

  for (var j = 0; j < issue.fields.attachment.length; j++) {
    var note = {
      _id: ObjectID(),
      createdAt: issue.fields.attachment[j].created,
      content: issue.fields.attachment[j].filename,
      attachmentUrl: issue.fields.attachment[j].content,
      attachmentPreviewUrl: issue.fields.attachment[j].thumbnail
    };
    notesArray.push(note);
  }

  /* Creating seaparate notes by taking comments from each JIRA issue and put it in form of note */

  for (var k = 0; k < issue.fields.comment.comments.length; k++) {
    var note = {
      _id: ObjectID(),
      createdAt: issue.fields.comment.comments[k].created,
      content: issue.fields.comment.comments[k].body,
      attachmentUrl: "",
      attachmentPreviewUrl: ""
    };
    notesArray.push(note);
  }

  /* Creating backlog items */

  result.product.backlog.push({
    _id: ObjectID(),
    productId: result.product._id,
    title: issue.fields.summary,
    description: issue.fields.description,
    category: issue.fields.issuetype.name,
    acceptanceCriteria: [],
    tasks: [],
    notes: notesArray
  });
  console.log("final", result.product);
});
...