为什么rowsAffected不返回整数

时间:2014-04-21 15:08:05

标签: javascript ios angularjs sqlite

我在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())时,它将其显示为[对象对象]。再一次,这告诉我它认为它是一个类,而不是类的属性(或者只是我班级中的一个变量)。

有人可以告诉我这里发生了什么吗?

1 个答案:

答案 0 :(得分:1)

正如文件明确指出:

  

executeSql()方法以 SQLResultSet对象作为参数调用其回调。

因此,传递给回调的参数是具有三个指定属性的对象。 始终信任DevTools。

所以,它应该更像是:

$DBService.ExecuteQuery(script, params,
    function (resultSetObj) {
        ...
        if (resultSetObj.rowsAffected !== 1) {
            ...