Я пытаюсь запустить foreach для переменной, которая может быть одним идентификатором или массивом из нескольких идентификаторов. Сначала я пытаюсь проверить, является ли это массивом или нет, и если нет, я объявляю его как массив только из 1 элемента.
router.post("/providerQuote", function (req, res) {
console.info(req.body.idQuote);
var idQuote = [];
if (req.body.idQuote.isArray)
{
idQuote = Object.values(req.body.idQuote);
}else{
idQuote = [req.body.idQuote];
}
console.info(idQuote);
idQuote.forEach(function (quote){
console.info(quote);
});
Это журнал консоли:
Server Started...
[ '5bfed54c9b0d061574d874c0', '5bfed54c9b0d061574d874bf' ]
[ [ '5bfed54c9b0d061574d874c0', '5bfed54c9b0d061574d874bf' ] ]
[ '5bfed54c9b0d061574d874c0', '5bfed54c9b0d061574d874bf' ]
Проблема здесь в том, что он каким-то образом вставляет req.body в другой массив.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Насколько я понимаю, вы говорите, значение idQuote в ответе может быть строкой или массивом строк, а вы пытаетесь всегда иметь один массив строк. Если я прав, я бы просто изменил ваш код на следующий:
router.post("/providerQuote", function (req, res) {
console.info(req.body.idQuote);
var idQuote = req.body.idQuote;
if (!Array.isArray(idQuote)) {
idQuote = [idQuote];
}
console.info(idQuote);
idQuote.forEach(function (quote){
console.info(quote);
});
Это просто обернет ваш idQuote в массив, если он в настоящее время не является массивом.
Установив по умолчанию для переменной idQuote значение req.body.idQuote, я делаю несколько вещей:
Также знайте, что isArray - это метод массива. Поскольку у вас не было круглых скобок, вы в основном проверяете, есть ли у текущего объекта метод isArray, и я почти уверен, что ни один из них этого не сделал (потому что это статический метод в классе Array), который затем подтолкнул вас в else, куда вы завернули его в массив.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
Я думаю, ты мог бы попробовать это
if ( Array.isArray(req.body.idQuote) ) {
// Perform your operations here
} else {
idQuote.push(req.body.idQuote)
}
Вы хотите использовать
if (Array.isArray(req.body.idQuote))?