亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更新json以顯示json數組中的對象數,而不是Node應用程序中的列表

更新json以顯示json數組中的對象數,而不是Node應用程序中的列表

慕村9548890 2021-05-16 16:30:05
我有這個json結構:    {        "sales_rep": {            "1": {                "id": 1,                "name": "Joe",                "email": "[email protected]",                "customers": [                    {                        "id": 1,                        "address": "1 High Street",                        "name": "CUSTOMER1",                        "supplierId": 1,                    },                    {                        "id": 2,                        "address": "2 High Street",                        "name": "CUSTOMER2",                        "supplierId": 1,                    },                    {                        "id": 3,                        "address": "3 High Street",                        "name": "CUSTOMER3",                        "supplierId": 1                    },                ]            }        }    }是否可以編寫一個功能來提供客戶數量而不是客戶詳細信息?我期待最終得到這樣的結果:    {        "sales_rep": {            "1": {                "id": 1,                "name": "Joe",                "email": "[email protected]",                "customers": "3"            }        }    }我想我需要某種縮減功能,但是我不確定該怎么做。我遇到的主要問題之一是原始json是使用此Sequelize模型生成的:let users = db.SalesRep.findAll({  attributes: ['id', 'name', 'email'],  include: [{    model: db.Customers,    as: 'customers',  }],  where: {'id': "1"},  order: orderClause,  offset,  limit,});
查看完整描述

2 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

findAll()是一個異步函數,它返回一個Promise。您需要使用.then()來獲得結果并在那里執行轉換。


db.SalesRep.findAll({

  attributes: ['id', 'name', 'email'],

  include: [{

    model: db.Customers,

    as: 'customers',

  }],

  where: {'id': "1"},

  order: orderClause,

  offset,

  limit,

}).then(function(users) {

    let sales_rep = users.sales_rep;

    for (let key in sales_rep) {

        sales_rep[key].customers = sales_rep[key].customers.length;

    }

    // do more stuff with users

});


查看完整回答
反對 回復 2021-05-27
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

  let data = {

        "sales_rep": {

            "1": {

                "id": 1,

                "name": "Joe",

                "email": "[email protected]",

                "customers": [

                    {

                        "id": 1,

                        "address": "1 High Street",

                        "name": "CUSTOMER1",

                        "supplierId": 1,

                    },

                    {

                        "id": 2,

                        "address": "2 High Street",

                        "name": "CUSTOMER2",

                        "supplierId": 1,

                    },

                    {

                        "id": 3,

                        "address": "3 High Street",

                        "name": "CUSTOMER3",

                        "supplierId": 1

                    },

                ]

            }

        }

    }


let customerCount = data.sales_rep['1'].customers.length

Object.assign(data.sales_rep['1'], { customers: customerCount})

console.log(data)

db.SalesRep.findAll方法是重現承諾,因此您可以await用來獲取結果


   let users = await db.SalesRep.findAll({

      attributes: ['id', 'name', 'email'],

      include: [{

        model: db.Customers,

        as: 'customers',

      }],

      where: {'id': "1"},

      order: orderClause,

      offset,

      limit,

    })

        let sales_rep = users.sales_rep;

        for (let key in sales_rep) {

            sales_rep[key].customers = sales_rep[key].customers.length;

        }


查看完整回答
反對 回復 2021-05-27
  • 2 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號