mysql - 收到sequelize的响应后修改JSON

标签 mysql arrays node.js json sequelize.js

我从我的sequelize函数中得到一个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 后对其进行修改。但我不知道这是如何运作的。

最佳答案

下面的 map 符合我认为您正在寻找的内容。您可能需要修改它,特别是根据 key 访问所需的变量。 (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);

关于mysql - 收到sequelize的响应后修改JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693663/

相关文章:

javascript - Sequelize 将传递的日期对象转换为本地日期

mysql - 如何解决MySQL由于hibernate envers审计而导致的死锁?

python - numpy 2d 数组(坐标)需要分配到 3D 数组中,分配给某个特定的 bin

node.js - 获取 node.js 中当前定义的函数列表

arrays - 如何将自定义对象数组转换为字符串数组?

java - 从字符串数组+颜色词中获取每个单词

javascript - Cypress 环境变量未定义

jquery - 如何用mysql实现无限滚动?

php SQL 数组的动态列表 - 如何设置顺序?

python - 在 NLTK 中创建自己的语料库的优势