我在iOS上为SQLite调用executeSql语句。我正在使用成功[和错误]回调方法,以便可以确认受影响的记录数。
返回时,正确定义了3个变量,但是当我尝试对受影响的行进行“ 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和行。这些是成功回调中的3个参数。当我将鼠标悬停在受影响的行上时,为什么显示所有3个?另外,当我写入控制台窗口(window.logger.logIt())时,它将显示为[object object]。再一次,这告诉我它认为它是一个类,而不是该类的属性(或仅仅是我类中的一个变量)。
有人可以告诉我这是怎么回事吗?
最佳答案
正如文档中明确指出的那样:
executeSql()方法以SQLResultSet对象作为参数调用其回调。
因此,传递给回调的参数是具有三个指定属性的对象。
始终信任DevTools。
因此,它应该更像是:
$DBService.ExecuteQuery(script, params,
function (resultSetObj) {
...
if (resultSetObj.rowsAffected !== 1) {
...
关于javascript - 为什么rowsAffected不返回整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23200065/