我用express做了restful api接口,前端用angular1.5 $http呼叫接口,之前我都只更新一筆資料,沒有太大問題,代碼如下:
express api部分
router.put('/animals', (req, res, next) => { let animal = req.body; db.Animal.findOne({ where: { idNo: animal.idNo } }).then(function (data) { data.updateAttributes(animal).then(function (animal) { res.json(animal); }); }); });
Angular部分
$http({ method : 'PUT' , url : '/api/animals' , data : animal, headers : { 'Content-Type' : 'application/json' } }) .success(function(animal){ alert('更新成功'); });
但是我現在想更新多筆資料,一個array內的多個animal,目前有兩個思路:
api接口不更改,在angular那寫個for迴圈,多次呼叫同個接口,但這樣似乎要寫個閉包才能確定是不是全部的update 完成了
更改api部分,angular一次把整個array傳進去,再利用sequelize的某些功能做一次更新,這部分目前只看到兩種做法,
1.利用promise.all 進行全部更新 2.一樣的寫法 只是把for迴圈放到api那 3.或許更高級一點可以利用transaction的功能,如果有一筆更新失敗就rollback??這我從來沒用過不清楚
請問哪樣做法比較好,具體又要怎麼實現呢? 謝謝
目前是使用Angular1.5提供的$q,可以一次發一個array的$http要求(promise),再用$q.all取得結果,具體代碼如下:
var qPromiseArr = []; for(var i=0;i