【问题标题】:GQL resolver: returning nullGQL 解析器:返回 null
【发布时间】:2021-09-09 19:24:14
【问题描述】:

我从 API 调用数据并且有一个如下所示的解析器:

Query: {
    async getSomething(parent, args, ctx, info) {
      const kek = yada.aol.emails(function (err, res) {
            return[{name: "lmao"}]
            // returns null every time
        })
      return [{name: "lol"}]
      // returns correctly
    },
  },

但是,我需要返回的数据将是函数内的响应。我想知道为什么我返回的任何嵌套在该函数中的东西都会返回 null 以及如何继续适当地调整数据?

【问题讨论】:

    标签: javascript graphql resolver


    【解决方案1】:

    namecheap.domains.getList 函数是异步的。您的最后一个return 在回调function (err, res) {} 之前执行。你需要返回一个 Promise。

    要么namecheap.domains.getList支持Promise,你可以直接返回(但我不知道那是什么),或者你可以让回调函数解析一个Promise:

      Query: {
        getDomains(parent, args, ctx, info) {
          return new Promise((resolve, reject) => {
            namecheap.domains.getList((err, res) => {
              if (err) return reject(err);
              resolve(res);
            })
          });
        },
      },
    

    【讨论】:

    • 如果您不介意调整您的答案以完全指导我完成此操作,我将问题编辑得更加具体!
    • 好的,我已经更新了答案(在您问题的新代码中,将内部的return 替换为resolve(res); - 或resolve([{name: "lol"}]);,具体取决于您要返回的内容)跨度>
    猜你喜欢
    • 2014-07-24
    • 2021-10-17
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多