javascript - validacion - ¿Cómo asegurar que la ejecución de las funciones esté en orden?
validar formulario javascript antes de enviar (1)
Sí, tienes razón, puede haber un problema como este. No estoy familiarizado con Firebase, pero busca algo que te permita incrementar ese número directamente en firebase sin tener que buscarlo primero. Esta será una operación atómica y se asegurará de que no encuentre el problema que describió.
Si esto no es posible con firebase, entonces quizás tengas que configurar un servidor en el medio que de alguna manera mantenga el registro del contador. Cada vez que desee incrementar / disminuir el número, la solicitud pasará por su servidor, que primero realiza la operación en la memoria caché y luego completa la solicitud llamando a la API de Firebase.
Actualización: Así es como Firebase recomienda esto :
ref.transaction(function (current_value) {
return (current_value || 0) + 1;
});
Tengo una función activada por HTTP que devuelve un número de incremento cada vez que se llama al punto final. El código se ve así:
export const reserve = functions.https.onRequest((req, resp) => {
cors(req, resp, async () => {
if (req.method.toLowerCase() !== ''post'') {
resp.status(405);
resp.end();
} else {
const path = `counter`;
const ref = firebase.database().ref(path);
const oldCount = (await ref.once(''value'')).val();
await ref.set(oldCount + 1);
resp.status(200).send({
number: oldCount
});
resp.end();
}
});
});
El problema es que si 2 invocaciones están muy cerca la una de la otra, ¿existe la posibilidad de que la función pueda devolver el mismo número? Si es así, ¿hay alguna forma de prevenir esto?