Вы можете reduce
записи, возвращаемые Object.entries
, например:
let obj = {
"BPContName": "aName;bName;cName",
"BPContEmail": "aEmail;bEmail;cEmail",
"BPContPWID": "aPWID;bPWID;cPWID"
}
let bpTableDataName = Object.entries(obj).reduce((r, [key, value]) => {
let splits = value.split(";");
key = key.replace("BPCont", "").toLowerCase();
splits.forEach((split, i) => (r[i] = r[i] || {})[key] = split)
return r;
}, [])
obj.bpTableDataName = bpTableDataName;
console.log(obj)
Object.entries
возвращает массив пары ключ-значение. Прокрутите каждую из них split
Каждое значение в ;
BPCont
и сделав ее lowerCase
splits
и обновлять определенные ключи объектов в каждом индексе Обновление:
Поскольку у вас есть дополнительный d
в ключе вывода, вы можете создать объект отображения:
propertyMap = {
"BPContName": "name",
"BPContEmail": "email",
"BPContPWID": "pwdid"
}
А внутри reduce
измените код replace
на этот:
key = propertyMap[key]
Ну, насколько я могу сказать, это не делает! Единственной причиной там не являются очень проблемы с этим, что большинство операций записи сделано с единственной вставкой или обновлением (добавляющий комментарий, создав новое сообщение...).
В целом, большинство веб-приложений, которые я видел до сих пор, не беспокоятся слишком много транзакциями, атомарностью или даже ссылочной целостностью, которая довольно печальна. С одной стороны, грустно, что столько приложений просто полагается на чистую удачу, что ничего плохо не происходит, и с другой стороны это могло бы привести к впечатлению, что все эти методы не настолько важны когда дело доходит до материала базы данных.
Я думал бы, что транзакция гарантирует атомарную правильность на предыдущем слое абстракции. Когда транзакция происходит он блокировки по умолчанию, что это пишет. Я не уверен все же.