У меня есть несколько маяков BLE, которые отправляют данные в таблицу в aws DynamodB. Я знаю, как сканировать всю таблицу и получать данные, но это может вызвать большую нагрузку, поскольку данные постоянно добавляются в таблицу. У меня есть другая таблица сотрудников, и каждому сотруднику назначен идентификатор dma c, я хочу сначала отсканировать эту таблицу и получить всех сотрудников и их dmacs, затем я хочу просмотреть таблицу маяков и получить только данные маяков. которые соответствуют dma c таблицы сотрудника с текущей отметкой времени.
данные от маяков поступают в двух форматах
формат один
{
"gmac": "kbeacon/publish/D03304001882",
"payload": {
"gmac": "D03304001882",
"msg": "advData",
"obj": [
{
"dmac": "6814030A33DD",
"majorID": 1,
"minorID": 1009,
"refpower": -55,
"rssi": -65,
"time": "2020-04-21 12:16:10",
"type": 4,
"uuid": "7777772E6B6B6D636E2E636F6D000001"
},
{
"dmac": "6714030A33DD",
"majorID": 1,
"minorID": 1005,
"refpower": -55,
"rssi": -64,
"time": "2020-04-21 12:16:10",
"type": 4,
"uuid": "7777772E6B6B6D636E2E636F6D000001"
},
{
"dmac": "7614030A33DD",
"majorID": 1,
"minorID": 1010,
"refpower": -55,
"rssi": -53,
"time": "2020-04-21 12:16:10",
"type": 4,
"uuid": "7777772E6B6B6D636E2E636F6D000001"
},
]
},
"timestamp": "1587471373840"
}
формат 2
{
"gmac": "kbeacon/publish/D03304001882",
"payload": {
"advDevices": 16,
"blever": "3881",
"downDevices": 0,
"gmac": "D03304001882",
"msg": "alive",
"pubaction": "kbeacon/pubaction/D03304001882",
"subaction": "kbeacon/subaction/D03304001882",
"temp": 42,
"ver": "KBEACONGW_V2.4.2"
},
"timestamp": "1586355708349"
}
мне нужна помощь с реализацией кода javescript с использованием aws -sdk для решения этой задачи
то, что я пробовал
let params = {
TableName: "gmhk_bleclhk_kkm_employeeTable",
};
docClient.scan(params, async (err, data) => {
if (err) {
console.log(err);
} else {
let newitem;
await data.Items.map(async (element) => {
newitem = {
dmac:element.DMAC,
name: element.FIRST_NAME+" "+element.LAST_NAME,
department: element.DEPARTMENT,
lastentry:'--',
attendance:'--'
}
this.state.emData.push(newitem)
})
}
})
let params2 = {
TableName: "gmhk_bleclhk_kkm_003Table",
};
docClient.scan(params2, async (err, data) => {
if (err) {
console.log(err);
} else {
await data.Items[0].payload.obj.map(async (item) => {
await this.state.emData.map(async (item2) => {
let newitem2;
if(item.dmac === item2.dmac){
newitem2 = {
dmac:item2.dmac,
name: item2.name,
department: item2.department,
lastentry:item.time,
attendance:'present'
}
this.state.emData2.push(newitem2)
}
})
})
this.setState({loading:true})
}
})
но это не так t пройти через каждый элемент в таблице