我正在使用Ionic 3创建一个示例程序,其中我使用了SQLite来存储数据。我使用了一个常见的插入查询,它将拆分列和值并将这些细节存储在数据库中,但是当我尝试运行程序时,它向我显示每个错误数据都不是函数。 我已经使用每个循环来分割列和值,但我在Ionic 1中使用了相同的 - AngularJS JavaScript,它工作正常。任何人都告诉我下面的代码有什么问题?
?specs=1:Red,Blue;3:LED,OLED
错误部分:
insert(tblName, data) {
console.log('insert function in db got called: ', data);
this.columns = [];
this.values = [];
data.forEach(function (value, column) {
this.columns.push(column);
this.values.push(value);
console.log('columns', this.columns);
console.log('values', this.values);
});
console.log('columns: ', this.columns);
console.log('values: ', this.values);
var question = (Array(this.columns.length + 1).join('?,')).slice(0, -1);
return new Promise(resolve => {
var insertQuery = 'INSERT INTO ' + tblName + ' (' + this.columns.join(', ') + ') VALUES (' + question + ');';
console.log('insertQuery: ', insertQuery);
this.db.executeSql(insertQuery, this.values, (r) => {
console.log('Inserted... Sucess..', this.values);
this
.getRows()
.then(s => {
resolve(true)
});
}, e => {
console.log('Inserted Error', e);
resolve(false);
})
})
}
答案 0 :(得分:0)
首先,它可能是类型错误,您确定data
是Array
吗?如果 true ,请转到下一个点,否则,您只是写错了javascript而没有错误。
问题是,Typescript必须知道你在做什么样的参数。
insert(tblName, data) {
console.log('insert function in db got called: ', data);
this.columns = [];
this.values = [];
data.forEach(function (value, column) {
this.columns.push(column);
this.values.push(value);
console.log('columns', this.columns);
console.log('values', this.values);
});
}
插入方法记录在任何地方? 你能编辑它吗?
insert(tbName: string, data: any[]) {}