首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从不同的路径调用异步函数会得到不同的结果

问从不同的路径调用异步函数会得到不同的结果
EN

Stack Overflow用户
提问于 2021-01-09 14:05:23
回答 1查看 47关注 0票数 0

我有一个名为" teteraQueryDb ()“的异步函数,它以如下方式从Db获取数据:/root/afolder/b文件夹/file.js函数导出方式如下: module.exports.teteraQueryDb =teteraQueryDb

当我尝试以相同的路径调用文件中的函数时,我这样做了,并且成功了:

代码语言:javascript
复制
const teteraProvDb = require('./readingProvTetera');

(async(teteraProvDb) =>{

    var newTeteraProvDb = await teteraProvDb.teteraQueryDb().then((te) => {return te})
    console.log(newTeteraProvDb)
    
})(teteraProvDb);

但是从根开始做,我无法获取数据,并且我得到了“未定义”:

代码语言:javascript
复制
const teteraProvDb = require('./afolder/bfolder/readingProvTetera');
(async(teteraProvDb) =>{

    var newTeteraProvDb = await teteraProvDb.teteraQueryDb().then((te) => {return te})
    console.log(newTeteraProvDb)
    
})(teteraProvDb);

这是readingProvTetera.js的配置:

代码语言:javascript
复制
const sqlite3 = require('sqlite3').verbose();
const dbRoute = '../../myDb.db'

function teteraQueryDb(){

    let db = new sqlite3.Database(dbRoute, err =>{
        console.log(err)
    })
    return new Promise (resolve =>{
        db.all("SELECT DISTINCT * FROM tetera", (err, rows) =>{
            if(err){
                console.log("Something went wrong with the query");
            }
            resolve(rows) 
        })
    })
    db.close()
}

module.exports.teteraQueryDb = teteraQueryDb

为什么?我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-01-09 14:41:56

./不是根路径,而是当前文件夹路径。所以当你写路径./readingProvTetera的时候,它意味着从当前文件夹加载数据库。path ./afolder/bfolder/readingProvTetera表示从当前文件夹的文件夹b文件夹加载数据库。

根路径可以通过console.log(process.env.PWD)检查。因此路径可以是${process.env.PWD}/afolder/bfolder/file.js。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65639862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档