Я занимаюсь разработкой приложения с использованием Ionic 4. Итак, для этой конкретной функции я извлекаю записи из базы данных SQLite в телефоне и помещаю их в API. Я использую обещание, чтобы убедиться, что текущие данные уже опубликованы, прежде чем переходить к следующему и так далее. Он работал отлично и вдруг перестал работать.
Я серьезно не знаю, что произошло, так как в моем коде ничего не изменилось. Я надеюсь, что кто-то может мне помочь.
Иногда это работает, но только 2 из 4 или 1 из 4 данных отправляются в БД, а другие возвращают ошибку ERROR: Uncaught (в обещании): [object Object] в Chrome Debugger.
dataPush() {
this.sqlite.create({
name: 'database.db',
location: 'default'
}).then((db: SQLiteObject) => {
db.executeSql('SELECT * FROM table', [])
.then(res => {
let promise = new Promise((resolve, reject) => {
for (var i = 0; i < res.rows.length; i++) {
this.array.push({
data1: res.rows.item(i).data1,
data2: res.rows.item(i).data2,
data3: res.rows.item(i).data3,
data4: res.rows.item(i).data4,
data5: res.rows.item(i).data5,
data6: res.rows.item(i).data6,
sync: res.rows.item(i).sync
})
if (this.array[i].sync == "N") {
this.http.post("API URL", this.array[i])
.toPromise()
.then(
res => { // Success
console.log(res);
resolve();
}
);
}
}
});
return promise;
}).catch(e => console.log('Sync Error'));
}).catch(e => console.log(e));
}
Эта функция доставляет мне проблемы. Надеюсь, кто-нибудь сможет мне помочь. Заранее спасибо.
Приветствия
EDIT
Ошибка в том, что он создает дублированный первичный ключ, и mysql не позволяет ему войти в таблицу (таким образом, только один входит, а другие отклоняются). Я установил свой первичный ключ на основе предыдущих ключей и добавлю один к номеру (все сделано в API PHP). По этой причине я реализовал обещание убедиться, что сторона PHP полностью выполнила задачу (вставка данных в базу данных), прежде чем другие данные начнут поступать в API. Есть идеи, почему обещание не работает?