我正在向服务器发出请求以获取一些值并将其推入数组中
我的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 }
出了什么问题?兑现承诺后,如何使我的元素返回?
任何提示都会很棒, 谢谢
答案 0 :(得分:1)
如果您运行返回承诺的内容,则可以在以下括号中引用该值,例如
.then((data)=> data)
将返回从诺言中获得的数据。
如果您想对返回的数据进行本地处理,例如将其分配给本地变量,则可以在then内进行。
或者,如果您只需要将数据返回给调用此解析器函数的父函数,则只需在authmodel.find语句的开头也添加一个return语句。