могу ли я изменить значение массива другим результатом запроса - PullRequest
0 голосов
/ 02 августа 2020

в моем коде у меня есть список найденных элементов, которые имеют массив идентификаторов другого списка, и я хочу изменить каждый из идентификаторов в массиве на их имя, которое я использовал для и для каждого l oop на go через каждый из идентификаторов и измените их на имя элемента следующим образом

/* the found list i have the array in */
List.findOne({ name: _.kebabCase(req.params.name) }, { _id: 0, __v: 0 }, (err, foundList) => {

    /* going through each value in the array */
    foundList.idsArray.forEach((id, i) => {

        /* trying to find the matching row in another collection with the value of the array index */
        Table.findById({ _id: id }, (err, foundTable) => {
           
            /* here i am trying the change the value, but it wont work */
            foundList.idsArray[i] = foundTable.name;
        });

    });

    /* here I am trying to render the page with new values, but it has not worked */
    res.render("preview", { details: foundList });

}).lean();

Я могу изменить значение где угодно в forEach, кроме этой Table.find

1 Ответ

0 голосов
/ 02 августа 2020

Вот лучший и чистый код, надеюсь, он сработает (просто убедитесь, что этот код помещен в функцию, за которой стоит ключевое слово async):

const foundList = await List.findOne({ name: _.kebabCase(req.params.name) }, { _id: 0, __v: 0 }).lean();
const newList = [];
for (const id of foundList.idsArray) {
    const foundTable = await Table.findById({ _id: id });
    newList.push(foundTable.name);
}

res.render("preview", { details: newList });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...