Глядя на https://github.com/vitaly-t/pg-promise/wiki/Data-Imports есть очень подробный документ о том, как использовать его для импорта.
Однако, хотя это работает для демо-сценария, я не знаю, как применить это в моем случае.
Когда я делаю свой веб-звонок, я получаю фактические данные JSON и параметр в заголовке, который дает мне значение для следующей страницы (может быть дата, строка или числовое значение).
В примере сказано:
db.tx('massive-insert', t => {
return t.sequence(index => {
return getNextData(index)
.then(data => {
if (data) {
const insert = pgp.helpers.insert(data, cs);
return t.none(insert);
}
});
});
})
.then(data => {
console.log('Total batches:', data.total, ', Duration:', data.duration);
})
.catch(error => {
console.log(error);
});
В этом случае sequence(index
будет использовать индекс, который, кажется, увеличивает +1. Но в моем случае,
function getNextData(nextPage) {
//get the data for nextPage
.....
//get the nextPage if exists for future use
nextPage = response.next;
resolve(data);
}
Мой вопрос в том, как я могу заменить index
на nextPage
в этом примере, так как каждое новое обещание должно использовать nextPage
из предыдущего.
ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: А если я хочу получить информацию из определенного значения nextPageInfo?
Например:
db.any('Select value from table')
.then(function(value) {
var data = value; //not working
db.tx('massive-insert', t => {
return t.sequence((index, data) => {
return getNextData(index, data)
.then(a => {
if (a) {
const insert = pgp.helpers.insert(a.data, cs);
return t.none(insert).then(() => a.nextPageInfo);
}
})
});
})
.then(data => {
// COMMIT has been executed
console.log('Total batches:', data.total, ', Duration:', data.duration);
})
.catch(error => {
// ROLLBACK has been executed
console.log(error);
})
}