从sequelize获得响应后修改JSON

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

我从我的续集函数中得到了一个JSON。我必须修改,因为我必须将它发送到数据库导入程序,谁需要它以固定的形式。有没有办法自定义此功能,以便我得到所需的结果?

楷模:

User.associate = function (models) {
    User.hasMany(models.SurveyResult)
  }`

    SurveyResult.associate = function (models) {
    SurveyResult.belongsTo(models.User)

功能:

  async mediImport (req, res) {
    try {
      const transaction = await User.findAll({

        where: { released: true },
        // Select forename as Vorname, name as Nachname
        attributes: [
          ['forename', 'PAPPS286'],
          ['name', 'Nachname'],
          ['birthdate', 'PADPS60']
        ],

        include: [{ model: SurveyResult, attributes: ['result'] }]

      }).map(user => user.toJSON())

      res.send({
        transaction

      }
      )
    }

这是我从函数得到的JSON

{
    "transaction": [
        {
            "PAPPS286": "Tes",
            "Nachname": "Josef",
            "PADPS60": null,
            "SurveyResults": [ {
                    "result": {
                        "name": "blau",
                        "email": "mail",
                        "birthdate": "01.02.1990"
                    }
                }]
        },
        {
            "PAPPS286": "Dampf",
            "Nachname": "Hans",
            "PADPS60": null,
            "SurveyResults": [
                {
                    "result": {
                        "name": "blau",
                        "email": "mail",
                        "birthdate": "01.02.1990"
                    }
                }
            ]
        },    
      ]
    },

这是我需要的JSON形式:

{
        "transaction": [
            PAD{
                "PAPPS286": "Tes",
                "Nachname": "Josef",
                "PADPS60": null,
                "MH":  {
                            "name": "blau",
                            "email": "mail",
                            "birthdate": "01.02.1990"

            },
            PAD{
                "PAPPS286": "Dampf",
                "Nachname": "Hans",
                "PADPS60": null,
                "MH":  {
                            "name": "blau",
                            "email": "mail",
                            "birthdate": "01.02.1990"
                        }

            },    
          ]
        },

也许有一种方法可以在我找回之后修改JSON。但我不知道Knoe如何才能起作用。

mysql arrays node.js json sequelize.js
1个回答
1
投票

以下map做我认为你正在寻找的。您可能需要对其进行修改,尤其是在根据密钥访问所需变量时。 (t.PAPPS286t.PADPS60

另外,我只抓住第一个调查结果SurveyResults。如果没有或者超过1,则不确定您想要什么。

var obj = {
  "transaction": [{
      "PAPPS286": "Tes",
      "Nachname": "Josef",
      "PADPS60": null,
      "SurveyResults": [{
        "result": {
          "name": "blau",
          "email": "mail",
          "birthdate": "01.02.1990"
        }
      }]
    },
    {
      "PAPPS286": "Dampf",
      "Nachname": "Hans",
      "PADPS60": null,
      "SurveyResults": [{
        "result": {
          "name": "blau",
          "email": "mail",
          "birthdate": "01.02.1990"
        }
      }]
    },
  ]
}


obj.transaction = obj.transaction.map((t) => {
  return Object.assign({
    "PAPPS286": t.PAPPS286,
    "Nachname": t.Nachname,
    "PADPS60": t.PADPS60,
    "MH": {
      "name": t.SurveyResults[0].result.name,
      "email": t.SurveyResults[0].result.email,
      "birthdate": t.SurveyResults[0].result.birthdate
    }
  })
})

console.log(obj);
© www.soinside.com 2019 - 2024. All rights reserved.