我在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/

10-10 04:23