для перехода.
У меня есть проблема, которой я хотел бы поделиться и, надеюсь, иметь возможность поделиться с вами своими хитростями и хитростями, в первую очередь вот как выглядит вся моя функция:
async function get(req, res) {
const pagination = simplePagination(req);
let result = [];
let dataChat = [];
await chatModel.updateMany({
user_id: req.query.user_id,
platform_id: req.query.platform_id,
vendor_id: req.query.vendor_id,
}, {
read: 1,
updated_At: new Date(),
})
.then(() => chatModel.find({
user_id: req.query.user_id,
platform_id: req.query.platform_id,
vendor_id: req.query.vendor_id,
})
.sort({
created_At: 'asc'
})
// eslint-disable-next-line radix
.skip(parseInt(pagination.page))
.limit(parseInt(pagination.row))
.lean()
.then(async(data) => {
dataChat = data;
})
.catch((err) => {
// console.log(err, '<<<< dimana errornya');
setContent(500, errorCode.generalError.SYSTEM_ERROR);
return res.status(500).json(getContentFail(req, err));
}));
dataChat.forEach((element) => {
if (element.chat_type === 'negotiation') {
dbPlatform.findByPk(element.platform_id, {
include: [{
model: dbPlatform_image,
order: [
['created_at', 'asc']
],
limit: 1,
}],
})
// eslint-disable-next-line no-loop-func
.then((dataPicture) => {
element.data = dataPicture;
result.push(element);
console.log(element, '<< ASD COBA CEK');
})
.catch((err) => {
setContent(500, errorCode.generalError.SYSTEM_ERROR);
return res.status(500).json(getContentFail(req, err));
});
}
});
setContent(200, result);
await res.status(200).json(getContentSuccess());
}
хорошо, давайте разберемся и позвольте мне кратко объяснить, в чем мои проблемы, намерения и ожидания.
как вы, ребята, можете видеть в этой части:
let result = [];
let dataChat = [];
await dataChat.forEach((element) => {
if (element.chat_type === 'negotiation') {
dbPlatform.findByPk(element.platform_id,
{
include: [{
model: dbPlatform_image,
order: [['created_at', 'asc']],
limit: 1,
}],
})
// eslint-disable-next-line no-loop-func
.then((dataPicture) => {
element.data = dataPicture;
result.push(element);
console.log(element, '<<<< check element');
console.log(result, '<<<<<< resultnya');
})
.catch((err) => {
setContent(500, errorCode.generalError.SYSTEM_ERROR);
return res.status(500).json(getContentFail(req, err));
});
}
});
setContent(200, result);
await res.status(200).json(getContentSuccess());
i ' Я успешно могу получить sh результат поиска модели чата для переменной dataChat, и после этого моя цель состоит в том, чтобы использовать переменную dataChat l oop для каждого из них, чтобы создавать и изменять с использованием условий в моих l oop и pu * 1033. * это приводит к переменным, а затем к возвращаемым, поскольку эта часть показывает
dataChat.forEach((element) => {
if (element.chat_type === 'negotiation') {
dbPlatform.findByPk(element.platform_id,
{
include: [{
model: dbPlatform_image,
order: [['created_at', 'asc']],
limit: 1,
}],
})
// eslint-disable-next-line no-loop-func
.then((dataPicture) => {
element.data = dataPicture;
result.push(element);
console.log(element, '<< ASD COBA CEK');
})
.catch((err) => {
setContent(500, errorCode.generalError.SYSTEM_ERROR);
return res.status(500).json(getContentFail(req, err));
});
}
});
setContent(200, result);
await res.status(200).json(getContentSuccess());
проблема состоит в том, что вместо возврата результирующих переменных, которые уже изменены, возвращается пустой массив и передается значение для каждого l oop, т.е. уже попробуйте поставить await раньше, вот так:
await dataChat.forEach((element) => {
if (element.chat_type === 'negotiation') {
dbPlatform.findByPk(element.platform_id,
{
include: [{
model: dbPlatform_image,
order: [['created_at', 'asc']],
limit: 1,
}],
})
// eslint-disable-next-line no-loop-func
.then((dataPicture) => {
element.data = dataPicture;
result.push(element);
console.log(element, '<< check element');
})
.catch((err) => {
setContent(500, errorCode.generalError.SYSTEM_ERROR);
return res.status(500).json(getContentFail(req, err));
});
}
});
, но это не помогает и продолжает проходить напрямую и возвращает пустой массив с таким результатом
{
"response": 200,
"result": []
}
* 10 20 *
я уже проверяю результат этого для каждого l oop, используя консольный журнал в моем терминале следующим образом:
.then((dataPicture) => {
element.data = dataPicture;
result.push(element);
console.log(element, '<<<< check element')
console.log(result, '<<<< check result')
})
показывает, что данные элемента были успешно изменены, и результат также уже успешно изменен с данными из элемента, но, к сожалению, он решает пройти процесс и непосредственно вернуть, но еще не изменить переменную результата, в результате чего я получаю пустой массив.
К вашему сведению, я использую mon goose (MongoDB) и продолжаю (Postgres) метод в этой функции
спасибо, что заглянули и хорошего дня:)