javascript - 为什么我无法从导出函数获取数据

标签 javascript node.js express

在问这个问题之前,yes I have read the incumbent question here这对我来说仍然没有意义,因此当另一个问题没有给我一个我可以理解的答案时,将其标记为重复项并没有帮助。

  1. 我想要一个函数返回一个值(来自数据库的 JSON 数据)。
  2. 每当从另一个文件调用该函数时,我希望将值返回到调用页面。
  3. 就是这样。

这是我的 .js 文件中的函数:

async function rsOffersAll() {
    await global.MYDB.connect(); // global variable already setup using mssql module in app.js
    try {
        global.MYDB.request(global.MYDB).query('SELECT Top(10) * FROM [Broadcast].[Offer]').then(function(result) {
            console.dir(result); // shows correct data
            return JSON.stringify(result); // how do I return this value so that any other file calling rsOffersAll gets THIS result?
        });
    } catch (error) {
    }
}

module.exports.rsOffersAll = rsOffersAll;

在我的调用 .js 文件中,我有以下内容:

const Offer = require('../models/broadcasts/offer');

(async function rsOffersAll() {
      let rsOffersAll = await Offer.rsOffersAll();
      console.log(rsOffersAll); // this should log the JSON data in the console but I get "undefined" instead
    })();

如何编辑上面的代码,使数据返回到调用页面?我知道由于某种原因没有返回任何内容,但我不知道为什么(链接到另一个提出类似问题的问题不会有帮助,相信我)。有人可以用我上面的代码解释一下吗?

最佳答案

您没有从 rsOffersAll 返回任何内容。 then() 回调返回了一些东西,但仅此而已。试试这个,修复它:

async function rsOffersAll() {
    await global.MYDB.connect(); // global variable already setup using mssql module in app.js
    try {
        return global.MYDB.request(global.MYDB).query('SELECT Top(10) * FROM [Broadcast].[Offer]').then(function (result) {
            console.dir(result); // shows correct data
            return JSON.stringify(result); // how do I return this value so that any other file calling rsOffersAll gets THIS result?
        });
    } catch (error) {}
}

关于javascript - 为什么我无法从导出函数获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901104/

相关文章:

javascript - 在 v-for 中创建局部变量

node.js - 在 wercker.yml 文件的构建步骤中停止运行服务器

node.js - 声明合并和别名不能一起工作

javascript - 本地 Passport 身份验证策略提供临时 header

javascript - 减少在同一 HTML 元素上使用 getElementById 的次数

javascript - 如何将长度超过 200000 个字符的 Base64 字符串发送到 PHP 函数,以便保存图像

javascript - 当使用 ajax 调用渲染表单时,客户端验证在 Yii2 中不起作用

node.js - 在 application/octet-stream 中使用 restify 设置内容类型 header

node.js - 将 Node 模块导出为唯一实例