我正在使用expressJs来路由某些POST请求。 从客户端传递对象的对象,并在服务器中使用for循环遍历每个对象。阵列中的NodeJs项变量只取得for循环中的第一个值
我的问题,在循环变量cantidad
只需要第一个值,而不是被刷新到pool.query
,但需要正确的价值的pool.query
之前。
所以,下面的行是确定的。
console.log("cantidad before query: " + cantidad);
但是下面的线是坏的。它有第一个价值。
console.log("cantidad in query: " + cantidad);
这是我的代码的一部分。
for (var key in objects) {
if (objects.hasOwnProperty(key)) {
...
console.log("cantidad before query: " + cantidad);
pool.query(qProducto,idProducto, function (error, results, fields {
if (error) {
...
} else {
console.log("cantidad in query: " + cantidad);
...
这是ExpressJs完整的职位。
app.post("/commanda", function (req, res) {
var idCuenta = req.body.idCuenta;
var idEmpleado = req.body.idEmpleado;
var fechaRegistro = req.body.fechaRegistro;
var cuenta_mesero = "C:" + idCuenta + ":E:" + idEmpleado;
var objects = req.body.objects;
var element = {};
for (var key in objects) {
if (objects.hasOwnProperty(key)) {
var qProducto = "SELECT descripcionProducto FROM PRODUCTO WHERE idProducto = ? ;";
var descProducto = '';
console.log("cantidad in commanda2 : " + objects[key].cantidad);
try {
pool.query(qProducto, objects[key].idProducto, function (error, results, fields) {
if (error) {
console.error(error);
console.error("Failed with query: " + qProducto);
res.status(500).end();
throw error;
} else {
console.log("cantidad in commanda4 : " + objects[key].cantidad);
descProducto = JSON.stringify(results[0].descripcionProducto);
element = {
idProducto:objects[key].idProducto,
cantidad:objects[key].cantidad,
descProducto:descProducto,
cuenta_mesero:cuenta_mesero,
fechaRegistro:fechaRegistro
};
imprimirOrden(element);
}
});
} catch (error) {
callback(error);
}
}
}
printer.printVerticalTab();
res.status(200).end();
});
这是一个物体的外观。
{ '0':
{ idProducto: '28',
cantidad: '3',
descProducto: 'Product1',
precioProducto: '3500',
precioTotal: 10500,
'$$hashKey': 'object:345' },
'1':
{ idProducto: '29',
cantidad: '2',
descProducto: 'Product2',
precioProducto: '4500',
precioTotal: 9000,
'$$hashKey': 'object:346' } }
好吧,你有一个想法如何实施?使用async.parallel?系列?瀑布? eachSeries?实际上,我的变量'cantidad'不是查询的结果,而是对象的'object'的一部分。查询结果是另一个成功更新的变量。 – negrotico19
您是否根据查询结果更改变量cantidad?如果是,那么我相信系列功能就是你要找的。它将确保在前一个查询完成后调用每个查询。 – itsundefined
阅读你的编辑评论后,我仍然不明白这个问题。代码的哪一部分是你改变变量cantidad?因为您声明只有第一个值是控制台记录的。 – itsundefined