請記住,我是node.js的新手,我使用的是android開發。使用node.js並承諾獲取分頁數據
我的情況是這樣的:
- 運行對返回null或值
- 呼叫與數據庫值的web服務的數據庫,它提供信息分頁查詢,這意味着在調用如果有更多的信息要獲取,我會得到一個參數傳遞給下一個調用。
- 的所有項目進行檢索後,將它們存儲在數據庫中的表
- 如果一切順利,先前收到的每一個項目,我需要讓其他Web呼叫,存儲檢索信息在另一個表
- 如果取任何數據集的失敗,所有的數據必須從數據庫恢復
到目前爲止,我已經試過這樣:
getAllData: function(){
self.getMainWebData(null)
.then(function(result){
//get secondary data for each result row and insert it into database
}
}
getMainWebData: function(nextPage){
return new Promise(function(resolve, reject) {
module.getWebData(nextPage, function(errorReturned, response, values) {
if (errorReturned) {
reject(errorReturned);
}
nextPage = response.nextPageValue;
resolve(values);
})
}).then(function(result) {
//here I need to insert the returned values in database
//there's a new page, so fetch the next set of data
if (nextPage) {
//call again getMainWebData?
self.getMainWebData(nextPage)
}
})
有幾件事情失蹤,從我TES ted,getAllData.then僅針對第一組項目觸發一個,而不針對其他項目,因此清楚地處理返回的數據不正確。
後編輯:我已編輯場景。鑑於一些更多的研究,我的感覺是我可以使用鏈或.then()
來按順序執行操作。
這裏:https://stackoverflow.com/questions/44783797/nodejs-inserting-data-into-postgresql-error你可以找到一個實例與pg-promise異步拉數據的例子。 –
謝謝@重要 - 但由於我是節點新手,所以很難理解。我已經使用knex for postgres插入並且工作正常。在理解它之前,我需要更詳細地研究其他問題的答案 – Alin
您可能在事務之外使用了knex。這一次更棘手。您需要一個事務,以便能夠回滾更改,並且需要運行無限的異步序列。這就是那個例子的作用。 –