Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Lodash上的异步等待”;每一个;方法中包含Mongoose查询_Javascript_Asynchronous_Async Await_Lodash - Fatal编程技术网

Javascript Lodash上的异步等待”;每一个;方法中包含Mongoose查询

Javascript Lodash上的异步等待”;每一个;方法中包含Mongoose查询,javascript,asynchronous,async-await,lodash,Javascript,Asynchronous,Async Await,Lodash,它总是返回空的connectionId。它不会等待循环完成 我遗漏了什么,我尝试用循环来附加wait,即wait\uuuOch(…并尝试将循环包装在Promise.all(… 但我认为我对基础知识不太清楚,我希望我能通过这个例子更清楚地了解概念。你可以这样做: const connectionIds=wait Promise.all(connections.map)(异步连接=>{ 设id=connection.id; let connector=await UserProfile.findOn

它总是返回空的connectionId。它不会等待循环完成

我遗漏了什么,我尝试用循环来附加wait,即wait\uuuOch(…并尝试将循环包装在Promise.all(…
但我认为我对基础知识不太清楚,我希望我能通过这个例子更清楚地了解概念。

你可以这样做:

const connectionIds=wait Promise.all(connections.map)(异步连接=>{
设id=connection.id;
let connector=await UserProfile.findOne({phoneNumber:id});
返回{
名称:connector.name.split(“”[0],
imageID:connector.imageID,
phoneNumber:connector.phoneNumber
}
}))

基本上,您可以将现有数组映射到允许Promise.all完成其工作的Promission数组。

我通过省略lodash函数的使用并用简单的for..of方法替换它来解决问题。

但我不明白它为什么会起作用。其中一名成员在给出解决方案的帖子上写了一条评论

看看这里
Array.prototype.map()
+
Promise.all()
let connectionIDs = [];
_.each(connections, async connection => {
    let id = connection.id;
    let connector = await UserProfile.findOne({phoneNumber: id});
    connectionIDs.push({
        name: connector.name.split(" ")[0],
        imageID: connector.imageID,
        phoneNumber: connector.phoneNumber
    })
});
console.log(connectionIDs) //// []