我在我的项目中使用带有 sql.js 的 SQLite,但我的实现遇到了一些麻烦。似乎查询在数据库上运行了两次,因为对于 INSERT 语句,我在数据库中获得了 2 条记录。
我这样做的方式是创建 SQL,然后将其传递给此方法(opts 变量包含放入数据库的所有数据):
prepareStatementAndCompileResults(db, sql, opts){
const stmt = db.prepare(sql);
const result = stmt.getAsObject(opts);
var rows = [];
if(!this.isEmpty(result)){ // isEmpty is a simple method that checks for empty objects
rows.push(result);
}
while(stmt.step()) {
var row = stmt.getAsObject();
rows.push(row);
}
this.saveToFile(db);
stmt.free();
return rows;
},
这是一个正在运行两次的示例 SQL INSERT
INSERT OR IGNORE INTO tag_event (tag_id, event_id, unique_string)
VALUES (:tag_id,:event_id, :unique);
这是此查询的 opts 变量的样子:
var opts = {
[':tag_id']: 1,
[':event_id']:1,
[':unique']: '1-1'
}