创建嵌套JSON对象失败

问题描述 投票:0回答:1

我正在尝试使用NodeJS创建一个嵌套的JSON对象。我正在从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中有两个或多个“ Epic”类型的问题,则我只想创建一个类别,然后我想创建一个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并尝试通过这样做来学习它。

arrays node.js json jira-rest-api
1个回答
0
投票

经过一些努力,我试图创建一个对象。下面是我的代码。

  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);
});
© www.soinside.com 2019 - 2024. All rights reserved.