Используя NodeJS, пытаясь обновить объект, используя другие значения, сохраненные в объектной модели. Объект содержит массив со значениями, которые используются для запроса набора других значений из MariaDB, а затем обновляют исходный объект.
Узел последовательно просматривает все значения массива, затем последовательно повторяет каждый вызов db, затем возвращает объект, но без обновлений.
local object = {
"type":null,
"id":null,
"code":null,
"title":null,
"description":null,
"attrs":[
{
"attr_id":null,
"attr_data_type":null,
"attr_control_type":null,
"fixed_list":null,
"attr_fixed_list_values":[
{
"attr_id":null,
"value_id:":null,
"fixed_list_value":null
}
],
"attr_name":null,
"attr_value":null
}
],
"mv_attrs":[
{
"attr_id":null,
"attr_data_type":null,
"attr_name":null,
"attr_values":[]
}
]
};
Обратные вызовы не работают. Вложенные обратные вызовы не работают. Библиотека Q не является опцией.
// Passed in object is 'lo' (i.e. local object)
//iterate through each object attribute
for(var a = 0; a < Object.keys(lo.attrs).length-1; a++) {
//get fixed value list for each attribute
if (lo.attrs[a].fixed_list === 'Y') {
const sql = 'select aflv.attr_id, aflv.value_id, aflv.attr_value as fixed_list_value from attr_fixed_list_values aflv where aflv.attr_id = ' + lo.attrs[a].attr_id;
connection.query(sql, function(err, rows) {
if (err) {
throw err;
} else {
lo.attrs[a]["attr_fixed_list_values"]=rows;
}
})
}
}
return (lo); //at this point, lo has been updated
Цель состоит в том, чтобы заполнить массив фиксированных значений
"attr_fixed_list_values":[
{
"attr_id":null,
"value_id:":null,
"fixed_list_value":null
}
],
для каждого атрибута в массиве attrs.