从firefox附加组件中选择sqlite时出错

时间:2013-10-26 19:30:53

标签: javascript sqlite firefox-addon firefox-addon-sdk

我正在使用我正在编写的firefox附加组件上的sqlite.js librarie。

我已经插入了很多数据whitout问题,但是,当我尝试使这个非常简单时选择

function selecionaUsuarioPorNome (nome, teste){
    sqlite.execute("select * from Usuario;", function(result,status){
        cm.enviaMensagem ("rows = " + result.rows + "\ncols = " + result.cows);
        for(var i=0;i<result.rows;i++){
            for(var j=0;j<result.cols;j++){
                console.log(result.data[i][j]);
            }
        }
    });
}

我收到了以下错误:

  

[17:08:29,013] [例外......“'错误:页面目前已隐藏,并且   在它再次可见之前不能再使用了。在调用方法时:   [mozIStorageStatementCallback :: handleCompletion]“nsresult:   “0x8057001c(NS_ERROR_XPC_JS_THREW_JS_OBJECT)”位置:“原生   frame :: :: :: line 0“data:no]

我的项目结构是:

/
|
|___Lib
. . |
. . |____ main.js
. . |____ bd_manager.js
. . |____ sqlite.js

在main.js中我放了主要功能:

exports.main = function (options, callbacks) {
    // quando o add-on é instalado
    if (options.loadReason == "install"){
        // call to test if I can get the user from the database.sqlite
        bd.selecionaUsuarioPorNome ("vitor", function (){});
    }
}

有人知道这个错误吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

似乎与SQLite没有任何关系。当您尝试将消息发送到附加到未再加载但仍在后向高速缓存(bfcache)中的页面的内容脚本(worker)时,会生成错误。因此,您尝试发送邮件的工作人员已附加到用户或您的加载项已离开的页面。

handleCompletion中的sqlite.js包装器执行的回调会触发此错误。可能是以下一行,因为其他行似乎没问题,而且这一行是唯一一个没有源代码的行。

cm.enviaMensagem ("rows = " + result.rows + "\ncols = " + result.cows);`

在不了解更多代码的情况下(一个完整的,可重复的示例),我不能告诉你更多。