我在 nodejs 中的套接字有问题。我向 API 发出请求以从商店获取 x 数量的产品。获得此产品列表后,我调用托管在另一台服务器上的外部服务,并通过该服务获取所有产品的库存。
这是我使用所有产品的数据向外部服务发起请求的部分:
let options = {
method: 'POST',
body: JSON.stringify(productsFromAPI),
headers: {
'Content-Type': 'application/json'
}
}
let response = await nodeFetch(`http://xxx.xxx.xxx.xxx:15422/api/product/getStockFromBD`, options);
let responseJSON = await response.json();
return res.send({ result: responseJSON });
在外部服务中,我收到完整的产品数组,并从数据库中收集它们:
let finalStructure = [];
await bluebird.mapSeries(productsFromAPI, async (pfa) => {
let conn = await pool.getConnection();
let sql = `select articulo, codigo_barras, stock_1
from alm
where entidad = :entidad and articulo like :articulo`;
let objToSend = {
entidad: 9,
articulo: pfa.sku
}
let result = await conn.execute(sql, objToSend, {});
if (result.rows != "") {
let structure = appUtils.dbStructure(result.rows, result.metaData);
let structureItem = { "ARTICULO": pfa.sku, "CODIGO_BARRAS": structure[0].CODIGO_BARRAS, "STOCK": 0 };
structure.map((s) => {
structureItem.STOCK = structureItem.STOCK + s.STOCK_1
});
finalStructure.push(structureItem)
}
await conn.close();
});
await pool.close();
console.log(finalStructure);
return res.send({result : finalStructure});
这个错误当时把我扔了。我试图一个一个地启动产品,而不是发送整个阵列,但我也收到了错误。所以我就是不明白。有没有人有办法处理它?谢谢。一切顺利。
我有解决办法。通过执行以下操作: Request 对象有一个名为 setTimeout 的方法。例子:
该参数指示请求将具有的超时毫秒数。在这种情况下,它将是 3 分钟。有了这个,我设法解决了我的问题。