我在iOS上调用SQLite的executeSql语句。我正在使用成功[和错误]回调方法,以便我可以确认受影响的记录数量。
当它返回时,它正确定义了3个变量,但是当我尝试对rowsAffected进行“if”检查时,它不起作用,因为它认为它是一个对象。
这是一个Angular服务......
这是我的代码:
$DBService.ExecuteQuery(script, params,
function (insertId, rowsAffected, rows) {
window.logger.logIt("rowsAffected: " + rowsAffected.toString());
if (rowsAffected !== 1) {
deferred.reject("Failed to update record. Query did not return 1 record affected.");
} else {
deferred.resolve();
}
},
function (error) {
deferred.reject("Failed to update record. " + error.message);
}
);
当我进入调试器并将鼠标悬停在rowsAffected变量上时,它会将其显示为类的属性,其中显示:insertId,rowsAffected = 1和rows。这些是成功回调中的3个参数。当我只是悬停在受影响的行上时,为什么它显示全部3?此外,当我写入控制台窗口(window.logger.logIt())时,它将其显示为[对象对象]。再一次,这告诉我它认为它是一个类,而不是类的属性(或者只是我班级中的一个变量)。
有人可以告诉我这里发生了什么吗?
答案 0 :(得分:1)
正如文件明确指出:
executeSql()方法以 SQLResultSet对象作为参数调用其回调。
因此,传递给回调的参数是具有三个指定属性的对象。 始终信任DevTools。
所以,它应该更像是:
$DBService.ExecuteQuery(script, params,
function (resultSetObj) {
...
if (resultSetObj.rowsAffected !== 1) {
...