Я написал этот тестовый запрос:
const [results] = await connection.execute(
`
SELECT * FROM providers WHERE id IN (${ids.join(',')})
`,
);
Однако он возвращается mysql.QueryResult. А учитывая, что этот массив может содержать тысячи записей, делать это нелепо JSON.parse(JSON.stringify(results)) не хочется.





Деструктурируйте результат операции, используя:
import { RowDataPacket } from 'mysql2/promise';
interface Provider extends RowDataPacket {
id: number;
// Other Provider properties
}
const [providers] = await connection.execute<Provider[]>(`SELECT * FROM providers WHERE id IN (${ids.join(',')})`);
После этого providers является массивом и содержит результат выполнения запроса.
Вы можете перебирать значения массива:
for (const provider of providers) {
console.info(provider.id);
// your code here
}
Почему вы перебираете поставщиков? Проблема в том, что результат rows не является итеративным, то есть это не массив... он даже не скомпилируется, выдавая ошибку Type 'QueryResult' must have a '[Symbol.iterator]()' method that returns an iterator..
Array.isArray(rows) возвращается true однако. Думаю, это из-за типа объединения, который они использовали... В итоге я сделал следующее: for (const r of rows as unknown[]) { console.info(r['id']); }@Алекс, извини, я не знал, что ты используешь TypeScript. Я уже обновил ответ для машинописной версии.
попробуйте
queryвместоexecute