GraphQL解析器-承诺解决后返回我的函数

时间:2018-08-25 23:14:10

标签: javascript node.js function promise graphql

我正在向服务器发出请求以获取一些值并将其推入数组中

我的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 }

出了什么问题?兑现承诺后,如何使我的元素返回?

任何提示都会很棒, 谢谢

1 个答案:

答案 0 :(得分:1)

如果您运行返回承诺的内容,则可以在以下括号中引用该值,例如

.then((data)=> data)

将返回从诺言中获得的数据。

如果您想对返回的数据进行本地处理,例如将其分配给本地变量,则可以在then内进行。

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