Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何编写返回数据列表的clear Select语句?_Javascript_Node.js_Sqlite_Express - Fatal编程技术网

Javascript 如何编写返回数据列表的clear Select语句?

Javascript 如何编写返回数据列表的clear Select语句?,javascript,node.js,sqlite,express,Javascript,Node.js,Sqlite,Express,我在expressjs+sqlite小型网络应用程序中工作,供本地使用。但我的问题是当我想在一张桌子上做一个完整的选择时。我所有的脚本都是在JScript的'use-strict'模式下运行的 我想做一个SELECT语句,并在名为listadata的json数组中收集数据。但问题是:除非我不在module.exports组之外声明此变量(即作为全局变量),否则我无法返回任何行列表。如果我删除了那个声明,我的函数不会返回任何东西 此模块必须返回行的完整列表。请任何人解释一下为什么我必须将这个变量声

我在expressjs+sqlite小型网络应用程序中工作,供本地使用。但我的问题是当我想在一张桌子上做一个完整的选择时。我所有的脚本都是在JScript的
'use-strict'
模式下运行的

我想做一个SELECT语句,并在名为
listadata
的json数组中收集数据。但问题是:除非我不在
module.exports
组之外声明此变量(即作为全局变量),否则我无法返回任何行列表。如果我删除了那个声明,我的函数不会返回任何东西

此模块必须返回行的完整列表。请任何人解释一下为什么我必须将这个变量声明为全局变量?。或者,根据Javascript,有没有一种更优雅的方式来处理此类语句

var listadata = [];

 module.exports = {
listas2 : function(){
    var db = sqlite.connect();
    db.all("SELECT * FROM TBWOHPARG", function(err,rows){
        listadata = [];
        rows.forEach(function(row){
            listadata.push({
                _id: row._id,
                descripcion: row.descripcion,
                fechacreacion: row.fechacreacion,
                fechamodificacion: row.fechamodificacion,
                referencia: row.referencia
            });
        });
    });
    return listadata;
}

db.all是异步的,因此在填充它之前,您将返回
listadata

使用回调,您可以执行以下操作

listas2 : function(callback){
    var db = sqlite.connect();
    db.all("SELECT * FROM TBWOHPARG", function(err,rows){
        listadata = [];
        rows.forEach(function(row){
            listadata.push({
                _id: row._id,
                descripcion: row.descripcion,
                fechacreacion: row.fechacreacion,
                fechamodificacion: row.fechamodificacion,
                referencia: row.referencia
            });
        });
    });
    callback(listadata);
}
但是,当你调用
listas2
时,你就无能为力了

something = listas2();
// do things with something
这是必须的

listas2(function(something) {
    // do things with something
}
这与重复问题的代码模式相同,只是您使用了不同的异步函数,即
db.all
而不是
$.ajax


副本中还有一个
promise
解决方案,我不会复制它

'use-strict'
-因此,不是在严格模式下,可能会复制Sorry,但在我的情况下,我是从节点服务器端编码的。Ajax超出了我的问题范围。异步就是异步谢谢!。。。这种解释方式与前面的完全不同。:)