У меня есть такая структура json:
{
"sales_rep": {
"1": {
"id": 1,
"name": "Joe",
"email": "joebloggs@email.com",
"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": "joebloggs@email.com",
"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,
});
Если я добавлю console.log(users)
, я получу это:
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined,
_trace:
{ Error
at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (/Users/paulcarron/git/Eighty8/updated-api/node_modules/bluebird/js/release/debuggability.js:411:19)
at Promise._then (/Users/paulcarron/git/Eighty8/updated-api/node_modules/bluebird/js/release/promise.js:232:17)
at Promise.then (/Users/paulcarron/git/Eighty8/updated-api/node_modules/bluebird/js/release/promise.js:125:17)
at Function.findAll (/Users/paulcarron/git/Eighty8/updated-api/node_modules/sequelize/lib/model.js:1748:8)
at Function.User.listForAdmin (/Users/paulcarron/git/Eighty8/updated-api/app/models/User.js:65:25)
at router.get (/Users/paulcarron/git/Eighty8/updated-api/app/controllers/admin.js:277:35)
at Layer.handle [as handle_request] (/Users/paulcarron/git/Eighty8/updated-api/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/paulcarron/git/Eighty8/updated-api/node_modules/express/lib/router/route.js:137:13)
at /Users/paulcarron/git/Eighty8/updated-api/app/middlewares/role.js:6:12
at Layer.handle [as handle_request] (/Users/paulcarron/git/Eighty8/updated-api/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/paulcarron/git/Eighty8/updated-api/node_modules/express/lib/router/route.js:137:13)
at cognitoExpress.validate (/Users/paulcarron/git/Eighty8/updated-api/app/middlewares/access.js:25:7) _parent: undefined, _promisesCreated: 0, _length: 1 } }