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