回调内的变异数组

时间:2019-08-25 00:22:44

标签: javascript node.js express

更新:我在弄清楚如何从MySQL结果循环中构建结果数组时遇到麻烦。重点是用原始数据中的标准化对象填充结果数组。 请帮忙!

var people = [];
for (let i = 0; i < rows.length; i++) {
    fillOutPeople(rows[i], function (person) {
        people.push(person);
    });
}

console.log(shipments);

const fillOutPeople = (result, callback) => {
    var person = {
        id: result.id,
        name: result.personName,
        address: {
            line1: result.personAdd1,
            line2: result.personAdd2,
            city: result.personCity,
            state: result.personState,
            zip: result.personZip
        },
        familyMembers: []
    }
    getFamilyMembers(result.id, function (result) {
        person.familyMembers = result;
        return callback(person);
    }); 
}

function getFamilyMembers(personId, callback) {
    connection.query('SELECT * FROM familyMembers WHERE personId=' + personId, 
    function (err, rows, fields) {
        if (err) {
            console.log({ result: err });
        } else {
            familyMembers = [];
            rows.forEach(function (familyMember) {
                familyMembers.push({
                    id: familyMember.familyMemberId,
                    name: familyMember.name
                });
            });
            return callback(familyMembers);
        }
    });
}

1 个答案:

答案 0 :(得分:-2)

也许是地图?

const shipments = rows.map(rowItem => rowItem);

这会迭代“行”数组,并且对于每一行都会调用一个函数,在这种情况下,它只是简单地返回参数,但是您始终可以使用一种方法来操纵数据并返回所需的任何内容。