如何遍历对象中的数组,使用数据库调用为每个数组值更新对象?

时间:2019-06-26 21:46:26

标签: arrays node.js database loops

使用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数组中的每个属性。

1 个答案:

答案 0 :(得分:-1)

本地对象= {“类型”:null,“ id”:null,“代码”:null,“标题”: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库似乎不是一个选择。

//传入的对象是“ lo”(即本地对象)

///遍历每个对象的属性for(var a = 0; a

//获取每个属性的固定值列表,如果(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)