Arrays Ionic 2如何处理从服务中的数据库查询生成的阵列
我试图通过同一服务中通过不同方法提供的数组进行循环。然而,当我出于某种原因尝试它时,用户是未定义的 发生错误的方法:Arrays Ionic 2如何处理从服务中的数据库查询生成的阵列,arrays,sqlite,ionic2,Arrays,Sqlite,Ionic2,我试图通过同一服务中通过不同方法提供的数组进行循环。然而,当我出于某种原因尝试它时,用户是未定义的 发生错误的方法: public toString() { let users: any; users = this.getAllUsers(); for (var i = 0; i < users.length; i++) { var userData = users[i]; console.l
public toString() {
let users: any;
users = this.getAllUsers();
for (var i = 0; i < users.length; i++) {
var userData = users[i];
console.log(" User: " + userData.iduser + " " + userData.firstname + " " + userData.lastname);
let meldingen: any;
meldingen = this.getMeldingenFromUser(userData.iduser);
for (var ii = 0; i < meldingen.length; i++) {
var meldingData = meldingen[ii];
console.log("- Melding: " + meldingData.idmelding + " " + meldingData.description);
}
}
}
}
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 12 : EXCEPTION: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
I/chromium: [INFO:CONSOLE(12)] "EXCEPTION: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined", source: file:///android_asset/www/build/main.js (12)
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 12 : ORIGINAL STACKTRACE:
I/chromium: [INFO:CONSOLE(12)] "ORIGINAL STACKTRACE:", source: file:///android_asset/www/build/main.js (12)
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 12 : Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
at s (file:///android_asset/www/build/polyfills.js:3:8568)
at file:///android_asset/www/build/polyfills.js:3:8318
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13422)
at Object.inner.inner.fork.onInvoke (file:///android_asset/www/build/main.js:3:23082)
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13373)
at e.run (file:///android_asset/www/build/polyfills.js:3:10809)
at file:///android_asset/www/build/polyfills.js:3:8911
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:14051)
at Object.inner.inner.fork.onInvokeTask (file:///android_asset/www/build/main.js:3:22982)
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:13987)
I/chromium: [INFO:CONSOLE(12)] "Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
at s (file:///android_asset/www/build/polyfills.js:3:8568)
at file:///android_asset/www/build/polyfills.js:3:8318
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13422)
at Object.inner.inner.fork.onInvoke (file:///android_asset/www/build/main.js:3:23082)
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13373)
at e.run (file:///android_asset/www/build/polyfills.js:3:10809)
at file:///android_asset/www/build/polyfills.js:3:8911
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:14051)
at Object.inner.inner.fork.onInvokeTask (file:///android_asset/www/build/main.js:3:22982)
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:13987)", source: file:///android_asset/www/build/main.js (12)
D/SystemWebChromeClient: file:///android_asset/www/build/polyfills.js: Line 3 : Unhandled Promise rejection:
I/chromium: [INFO:CONSOLE(3)] "Unhandled Promise rejection:", source: file:///android_asset/www/build/polyfills.js (3)
D/SystemWebChromeClient: file:///android_asset/www/build/polyfills.js: Line 3 : Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
I/chromium: [INFO:CONSOLE(3)] "Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined", source: file:///android_asset/www/build/polyfills.js (3)
01-02 08:35:51.890 1175-1175/? I/Keyboard.Facilitator: onFinishInput()
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 5 : returning all users:
I/chromium: [INFO:CONSOLE(5)] "returning all users: ", source: file:///android_asset/www/build/main.js (5)
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 5 : [{"iduser":1,"firstname":"Peter","lastname":"Pan"},{"iduser":2,"firstname":"Jan","lastname":"Jaap"},{"iduser":3,"firstname":"Karel","lastname":"Kast"},{"iduser":4,"firstname":"Roos","lastname":"Rozijn"}]
01-02 08:35:51.985 24904-24904/com.ionicframework.cwistlev1105374 I/chromium: [INFO:CONSOLE(5)] "[{"iduser":1,"firstname":"Peter","lastname":"Pan"},{"iduser":2,"firstname":"Jan","lastname":"Jaap"},{"iduser":3,"firstname":"Karel","lastname":"Kast"},{"iduser":4,"firstname":"Roos","lastname":"Rozijn"}
提前谢谢你的帮助
Poerkie这些函数正在返回
Promise
(应该返回Promise
)。您只能访问然后回调中的值。了解有关Promise
的更多信息。你需要用链接所有承诺,然后
比如说
public getMeldingenFromUser(iduser) {
return this.database.executeSql('SELECT * FROM melding, user WHERE melding.user_iduser = user.iduser AND user.iduser = ' + iduser + ';', []).then((resultSet) => {
if (resultSet.rows.length > 0) {
this.users = [];
for (let i = 0; i < resultSet.rows.length; i++) {
this.users.push({
"idmelding": resultSet.rows.item(i).idmelding,
"meldingType": resultSet.rows.item(i).meldingType,
"meldingTitel": resultSet.rows.item(i).meldingTitle,
"meldingOmschrijving": resultSet.rows.item(i).meldingOmschrijving,
"guidRuimte": resultSet.rows.item(i).ruimte,
"iduser": resultSet.rows.item(i).user_idUser,
});
}
console.log('Returning all kasteelonderdelen from user: ' + iduser);
console.log(JSON.stringify(this.users));
return this.users;
}
})
}
它给出以下错误:类型“void”上的属性“then”不存在我需要在方法中指定它需要返回数组吗?如果是这样,我应该指定哪种类型?您必须返回我在示例中提到的承诺。
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 12 : EXCEPTION: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
I/chromium: [INFO:CONSOLE(12)] "EXCEPTION: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined", source: file:///android_asset/www/build/main.js (12)
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 12 : ORIGINAL STACKTRACE:
I/chromium: [INFO:CONSOLE(12)] "ORIGINAL STACKTRACE:", source: file:///android_asset/www/build/main.js (12)
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 12 : Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
at s (file:///android_asset/www/build/polyfills.js:3:8568)
at file:///android_asset/www/build/polyfills.js:3:8318
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13422)
at Object.inner.inner.fork.onInvoke (file:///android_asset/www/build/main.js:3:23082)
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13373)
at e.run (file:///android_asset/www/build/polyfills.js:3:10809)
at file:///android_asset/www/build/polyfills.js:3:8911
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:14051)
at Object.inner.inner.fork.onInvokeTask (file:///android_asset/www/build/main.js:3:22982)
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:13987)
I/chromium: [INFO:CONSOLE(12)] "Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
at s (file:///android_asset/www/build/polyfills.js:3:8568)
at file:///android_asset/www/build/polyfills.js:3:8318
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13422)
at Object.inner.inner.fork.onInvoke (file:///android_asset/www/build/main.js:3:23082)
at t.invoke (file:///android_asset/www/build/polyfills.js:3:13373)
at e.run (file:///android_asset/www/build/polyfills.js:3:10809)
at file:///android_asset/www/build/polyfills.js:3:8911
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:14051)
at Object.inner.inner.fork.onInvokeTask (file:///android_asset/www/build/main.js:3:22982)
at t.invokeTask (file:///android_asset/www/build/polyfills.js:3:13987)", source: file:///android_asset/www/build/main.js (12)
D/SystemWebChromeClient: file:///android_asset/www/build/polyfills.js: Line 3 : Unhandled Promise rejection:
I/chromium: [INFO:CONSOLE(3)] "Unhandled Promise rejection:", source: file:///android_asset/www/build/polyfills.js (3)
D/SystemWebChromeClient: file:///android_asset/www/build/polyfills.js: Line 3 : Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined
I/chromium: [INFO:CONSOLE(3)] "Error: Uncaught (in promise): TypeError: Cannot read property 'length' of undefined", source: file:///android_asset/www/build/polyfills.js (3)
01-02 08:35:51.890 1175-1175/? I/Keyboard.Facilitator: onFinishInput()
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 5 : returning all users:
I/chromium: [INFO:CONSOLE(5)] "returning all users: ", source: file:///android_asset/www/build/main.js (5)
D/SystemWebChromeClient: file:///android_asset/www/build/main.js: Line 5 : [{"iduser":1,"firstname":"Peter","lastname":"Pan"},{"iduser":2,"firstname":"Jan","lastname":"Jaap"},{"iduser":3,"firstname":"Karel","lastname":"Kast"},{"iduser":4,"firstname":"Roos","lastname":"Rozijn"}]
01-02 08:35:51.985 24904-24904/com.ionicframework.cwistlev1105374 I/chromium: [INFO:CONSOLE(5)] "[{"iduser":1,"firstname":"Peter","lastname":"Pan"},{"iduser":2,"firstname":"Jan","lastname":"Jaap"},{"iduser":3,"firstname":"Karel","lastname":"Kast"},{"iduser":4,"firstname":"Roos","lastname":"Rozijn"}
public getMeldingenFromUser(iduser) {
return this.database.executeSql('SELECT * FROM melding, user WHERE melding.user_iduser = user.iduser AND user.iduser = ' + iduser + ';', []).then((resultSet) => {
if (resultSet.rows.length > 0) {
this.users = [];
for (let i = 0; i < resultSet.rows.length; i++) {
this.users.push({
"idmelding": resultSet.rows.item(i).idmelding,
"meldingType": resultSet.rows.item(i).meldingType,
"meldingTitel": resultSet.rows.item(i).meldingTitle,
"meldingOmschrijving": resultSet.rows.item(i).meldingOmschrijving,
"guidRuimte": resultSet.rows.item(i).ruimte,
"iduser": resultSet.rows.item(i).user_idUser,
});
}
console.log('Returning all kasteelonderdelen from user: ' + iduser);
console.log(JSON.stringify(this.users));
return this.users;
}
})
}
this.getMeldingenFromUser(iduser).then((users)=>{
console.log(users); // do what you want with users
})