![](/img/trans.png)
[英]How to implement custom authentication in auth0 and hasura graphql?
[英]How to handle a multiple requests in Hasura graphql and Netlify?
我正在使用 Flutter、Hasura graphql 和 Postgres DB 開發預訂系統。
假設我的數據庫有兩個主表,“Operation”和“Ticket”
"Operation" : "id", "operation_date", "seat_available".
"Ticket" : "id", "seat_no", "operation_id", "user_id".
在“操作”表中,我有一個名為“seat_available”的列,它是一個包含可用座位的字符串數組(例如,[“1”、“2”、“3”、“4”、“5”])
當某個用戶預訂座位時,它在“tickets”表中創建了一條記錄,其中包含“operation_id”,並且尚未分配任何座位號。
我在 Hasura 中創建了一個事件觸發器來觸發表“Tickets”中的“插入”,並使用 netlify 作為 webhook。 netlify function 用於檢查“Operation”表中的“seat_available”以及票證中的特定“operation_id”,並為該預訂票分配一個座位號。
問題是當多個用戶同時預訂座位時。 他們得到了相同的“seat_available”數據。 這會造成預訂沖突。 例如:
這使得 User_A 和 User_B 獲得了相同的預訂座位,即“1A”。 我怎么解決這個問題?
這可以通過在更新期間在 seat_available 上添加where
條件來完成。 例如,你可以做這樣的事情
UPDATE operation SET seat_available = {"1A", "2", "3", "4", "5"} where id = "<operation_id>" and seat_available = {"1", "2", "3", "4", "5"}
RETURNING *
如果查詢返回一行,則更新發生,您可以繼續。 否則,您應該重復獲取最新的 seat_available 並分配座位的過程。
在您的示例中, User_A 查詢將返回一行。 User_B 查詢將不會返回,因為 User_A 查詢已經更新了 seat_available,並且在 seat_available 上 User_B 的 where 條件將為 false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.