javascript - 使用者修改一個列表型的資料,後台和資料庫互動時應該怎麼操作好?

來源:互聯網
上載者:User
比如每個使用者有一個自己的收藏列表,使用者可以增加和刪除列表中的任一項。

那麼用HTTP請求和資料庫互動時,以下哪種是最科學的呢?
1,每次增刪都發起一次HTTP請求,在資料庫上作相應操作(這個HTTP請求太多我自己覺得不科學)
2,把資料庫上的列表資料下載下來呈現給使用者後,只在前端的資料模型中增刪,等到使用者可能要關閉頁面時用一次HTTP請求來同步,使資料庫上的資料更新。不過我主要想問的是這裡又有兩種具體的互動方法,請大家賜教:
2a,在前端資料模型操作時,記錄下哪些被增加了哪些被刪除了。在更新資料庫做Insert into... where value in和Delete ... where value in 這兩次操作
2b,前端只記錄資料模型。在更新資料庫時直接truncate原來的表,把新的表資料插入。
請問2a和2b哪種比較好?
另外,第2步中同步的時機一般應該是什麼時候呢?是用interval來定時同步呢?還是在使用者進行一個特定的操作後來同步?謝謝。

-------1218更新
不好意思,上面忘記說了,我指的是用angularJS這種情況下,可以用資料模型來暫存資料的

回複內容:

比如每個使用者有一個自己的收藏列表,使用者可以增加和刪除列表中的任一項。

那麼用HTTP請求和資料庫互動時,以下哪種是最科學的呢?
1,每次增刪都發起一次HTTP請求,在資料庫上作相應操作(這個HTTP請求太多我自己覺得不科學)
2,把資料庫上的列表資料下載下來呈現給使用者後,只在前端的資料模型中增刪,等到使用者可能要關閉頁面時用一次HTTP請求來同步,使資料庫上的資料更新。不過我主要想問的是這裡又有兩種具體的互動方法,請大家賜教:
2a,在前端資料模型操作時,記錄下哪些被增加了哪些被刪除了。在更新資料庫做Insert into... where value in和Delete ... where value in 這兩次操作
2b,前端只記錄資料模型。在更新資料庫時直接truncate原來的表,把新的表資料插入。
請問2a和2b哪種比較好?
另外,第2步中同步的時機一般應該是什麼時候呢?是用interval來定時同步呢?還是在使用者進行一個特定的操作後來同步?謝謝。

-------1218更新
不好意思,上面忘記說了,我指的是用angularJS這種情況下,可以用資料模型來暫存資料的

1.你為什麼認為1是不科學的呢?天知道用戶端哪邊會發生什麼事情~~當使用者添加了N個收藏,貓貓過來把電源搞掉了-關機了,這個咋整哦~~~
2.使用者希望它的每一步操作都是有效而真實的~~
3.刪除動作,不要DELETE,UPDATE原紀錄,做邏輯刪除
4.truncate表這麼暴力的招都用上啦,不要啊~~~~

只能每次發請求這是http

肯定要每次發送請求啊,你在前端怎麼儲存資料?如果不將使用者的操作存入資料庫,當使用者不小心重新整理頁面或者關閉頁面,他的操作在前端根本沒有辦法記錄下來。

這種就看你要怎麼設計了,如果你列表下面有個提交或者儲存按鈕,使用者就明白N種操作完成必須提交或儲存才會生效;如果你沒有這種提示性訊號,只是在每個列表後有個刪除,然後有個隨意增加的,使用者理解成操作即儲存,那就不能緩衝處理了唄,只能即時性操作資料庫

truncate這個有點不太科學,除非每個使用者都有一個自已的收藏表
可以找找 window.onbeforeunload 這個事件 在事件中先判斷使用者收藏的資料是否有改動,有則http請求處理

最近我也在煩這個http請求次數的問題,看了你的描述之後,突然有個想法。。。但不知道可行不可行。。。
首先是擷取資料的時候將資料存入一個資料模型裡,然後讓頁面從這個資料模型裡面拿取資料。
當頁面發生修改事件時,將修改後的資料存入資料模型,然後再從模型拿出修改頁面
然後開個定時器,隔一定時間就判斷資料模型裡面的資料是否發生改動,是就發生請求,不是就不發送。
最後當使用者離開該頁面的時候最後再判斷一次。。。
。。。
或許可以當第一個修改事件發生的時候開啟定時器。。。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.