来自节点js的sqlite没有返回结果

时间:2018-04-19 06:47:58

标签: javascript sqlite

我对这个节点js和sqlite事情有点新,但是我创建了一个简单的函数来从我的sqlite db获得1个结果

getOne: function() {
 sql.get(`SELECT * FROM currency_list order by rowid desc limit 1`).then(row => {
  if (!row) {
    return console.log("no data");
  } else {
    return row;
  }
});
},

然后我的来电者就是这样的

 module.exports = {
  run : (args, Client, msg, isOwner) => {
  let results = db.getOne();
  console.log("test result =>"+JSON.stringify(results));
 }
 };

我没有得到任何结果,因为我的控制台日志将显示函数中的Undefined。我可以知道如何使函数返回值吗?

1 个答案:

答案 0 :(得分:2)

您将从已传递给then的回调函数返回结果,而不是从getOne函数返回。

要解决这个问题,你可以这样做:

getOne: function() {
    return sql.get(`SELECT * FROM currency_list order by rowid desc limit 1`).then(row => {
                if (!row) {
                    return console.log("no data");
                } else {
                    return row;
                }
           });
}

得到这样的结果:

getOne().then(result => console.log(result));

或者,既然你在nodejs中这样做,你也可以这样做:

async function something(){
    let result = await getOne();
    console.log(result);
}
something();