javascript - 在 Promise 回调中调用 Meteor 方法 [停止且没有错误]

标签 javascript node.js meteor npm promise

我正在尝试使用这个 NPM 包:Gumroad-API在我的 Meteor 应用程序中。当我尝试在 Promise 回调内部执行 Meteor 方法调用(或集合插入)时,我在服务器端遇到问题。

以下是我的两个 Meteor 方法的代码:

Meteor.methods({

  testMethod: () => {
    console.log('TEST METHOD RUN');
  },

  fetchGumroadData: () => {
    const Gumroad = Meteor.npmRequire('gumroad-api');
    let gumroad = new Gumroad({ token: Meteor.settings.gumroadAccessKey });

    Meteor.call('testMethod');        // runs fine

    gumroad.listSales('2014-12-04', '2099-12-04', 1).then((result) => {
      console.log('1');               // runs fine
      Meteor.call('testMethod');      // execution halts here w/o error msg
      console.log('2');               // this never runs
    });
  },
});

.then()里面的代码每当我尝试执行 Meteor.call() 时,回调总是停止(没有错误消息)里面。

当我替换 Meteor.call() 时,我得到了相同的行为与 Collection.insert()如:Sales.insert({text:'test'}); .

最佳答案

老问题,但是,失败的原因是因为 Meteor 环境在您的回调中不可用。

警告这是未经测试的代码

Meteor.methods({

  testMethod: () => {
    console.log('TEST METHOD RUN');
  },

  fetchGumroadData: () => {
    const Gumroad = Meteor.npmRequire('gumroad-api');
    let gumroad = new Gumroad({ token: Meteor.settings.gumroadAccessKey });

    Meteor.call('testMethod');        // runs fine

    gumroad.listSales('2014-12-04', '2099-12-04', 1)
      .then(Meteor.bindEnvironment((result) => {
        console.log('1');               // runs fine
        Meteor.call('testMethod');      // execution halts here w/o error msg
        console.log('2');               // this never runs
      }));
    },
});

有关bindEnvironment和wrapAsync的教程可以在这里找到:https://www.eventedmind.com/items/meteor-what-is-meteor-bindenvironment

关于javascript - 在 Promise 回调中调用 Meteor 方法 [停止且没有错误],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377304/

相关文章:

javascript - jQuery 中的多个replaceWith?

javascript - 寻找一种将数据从 div 附加到超链接的方法

javascript - Node.js 新功能 - "http.Server"事件

node.js - 在 win10 中,我执行 yarn add protobufjs,但错误显示 : error An unexpected error occurred: "EPERM: operation not permitted, unlink

javascript - 选择活跃的 Meteor 订阅

javascript - 列出目录中的文件,其中文件名与 JS 中的正则表达式匹配

javascript - Meteor mongodb 短语法?

javascript - 我如何向玩家 friend 的时间线发送消息

javascript - 如何从独立的纯 JavaScript 函数调用 Angular 4 方法?

node.js - 如何让值对象远离服务器?