【问题标题】:GraphQL resolver - returns my function after promise resolvedGraphQL 解析器 - 承诺解决后返回我的函数
【发布时间】:2018-08-26 07:26:52
【问题描述】:

我正在向服务器发出请求以获取一些值并将它们推送到数组中

我的 GraphQL 服务器在进程结束之前返回给我数组,因此返回一个空数组。这里复制我使用的两种方法:

1-

  var array= [];
        var auths= authModel.find({}).exec()
        .then(res => {

            res.map(el =>{ 
                array.push(el.ip)
            })
        }).then(() => array)

console.log(auths) // object Promise
console.log(array) // []

2-

  const auths= authModel.find().exec();
            if(!auths){ 
                throw new Error("Error while fetching users...")
            }
            console.log("auths:", auths) //  Promise { <pending> }
            return auths // on graphiql > "auths": { "ip": null }

出了什么问题?承诺解决后如何让我的元素返回?

任何提示都会很棒, 谢谢

【问题讨论】:

标签: javascript node.js function promise graphql


【解决方案1】:

如果你运行的东西返回了一个承诺,这个值可以在下面的括号中引用,例如

.then((数据) => 数据)

会返回从promise获取的数据。

如果你想对返回的数据在本地做一些事情,比如将它分配给一个局部变量,你可以在 then 中做。

或者,如果您只需要将数据返回到调用此解析器函数的父函数,那么也只需在 authmodel.find 语句的开头添加一个 return 语句。

【讨论】:

  • 谢谢,我找到了这个解决方案:return {ip : authModel.find({ip}).exec().then(res =&gt; res[0].ip)}; 但我很确定有比我庞大的内联内容更优雅的解决方案来完成这项工作
猜你喜欢
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2021-05-25
  • 2019-10-01
相关资源
最近更新 更多