Я думаю, что важно понять, что lodash
работает точно так, как ожидалось в вашем примере. Проблема в том, что вы flatMap(f=>f.child_array)
сказали lodash, чтобы взять child_array
и вернуть его в следующую операцию цепочки. Затем он сделал так, как ожидалось, чтобы удалить дочерний элемент, который соответствовал идентификатору, а оставшаяся часть - дочерняя коллекция, запрошенная вами по возврату из flatMap
.
Кажется, что вы действительно хотите, это карта через fathers
удалить дочерний элемент, который совпадает с идентификатором, а затем вернуть the father
.
Например, это сделало бы это:
var data = [
{
"father_id": 1,
"name": "father 1",
"child_array": [
{
"child_id": 11,
"name": "father 1 child 1"
},
{
"child_id": 12,
"name": "father 1 child 2"
}
]
},
{
"father_id": 2,
"name": "father 2",
"child_array": [
{
"child_id": 21,
"name": "father 2 child 1"
},
{
"child_id": 22,
"name": "father 2 child 2 - TO DELETE"
}
]
}
]
removeById = (id, data) => _.map(data, father => {
father.child_array = _.reject(father.child_array, { child_id: id })
return father
})
console.log(removeById(22, data)) // 2 fathers with 2nd child removed from 2nd father
console.log(removeById(11, data)) // 2 fathers with 1 child each now
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
Есть несколько вещей, которые вы можете сделать для улучшения производительности:
DriverManagerDataSource
определите пул соединений с фиксированным числом соединений. Для упрощения используйте SingleConnectionDataSource
, который не будет выполнять какую-либо проверку соединения по займу. Это не заводская настройка, но в вашем тесте будет меньше движущихся частей. SELECT *
укажите только те столбцы, которые вам нужны. Разрешение *
может отличаться для JDBC и клиента командной строки, лучше всего удалить это неизвестное. client_no = ?
вместо client_no=" + clientNo
конкатенации. Это приведет к улучшению кэширования плана запросов при проверке различных номеров клиентов. Обратите внимание, что JVM требует более 10 000 вызовов метода для запуска JIT-компиляции и оптимизации. Если у вас есть простой main()
, который не нагревает JVM, код будет медленнее. Клиент командной строки уже скомпилирован в собственный код.