3
私は、エンドポイントが呼び出されるたびに増分番号を返すHTTPトリガー機能を持っています。コードは次のようになります。関数の実行順序を確実にする方法は?
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();
}
});
});
問題がある2つの呼び出しが互いに非常に接近している場合、機能は同じ番号を返すことができるという可能性はありますか?もしそうなら、これを防ぐ方法はありますか?
同じ番号を付与することが可能となることができるようにJavaScriptがシングルスレッドであるため。 –