- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
19小时前关门了。
Improve this question
用户电子邮件列表在一个单独的脚本(称为Script A)中从数据库中获取,然后推入数组(email)以循环。
电子邮件地址=[www.example.com,www.example.com] xyz@gmail.com , abc@gmail.com ]
数组在另一个脚本中引用,称为Script B。
- 数据库的层次结构设置为:*
1.用户
- www.example.com--〉{用户名: xyz@gmail.com示例网站} John Doe, userAlternateEmail:john@gmail.com}
- www.example.com--〉{用户名: abc@gmail.com示例网站} Jane Smith, userAlternateEmail:jane@gmail.com}
- 脚本B的代码 *
for ( let i = 0; i < email.length; i++ )
{
db.collection( `usersDb/${ email[i] }/records` ).get().then( ( querySnapshot ) =>
{
querySnapshot.forEach( ( doc ) =>
{
if ( doc.data().softDelete !== true )
{
showDetails( doc)
}
} )
} )
}
- 显示详细信息(文档)**
- showDetails(doc)函数用于在页面上显示用户的所有详细信息。*
let showDetails = doc => {
let userDetails= `
<div>
<span>${ doc.data().userName } </span>
<span>${ doc.data().userAlternateEmail } </span>
</div>
`
showUserData.innerHTML += userDetails
}
Db的路径是用户电子邮件的连接,为了匹配该路径并获取用户电子邮件,对Db的调用在for循环中,该循环提供用户电子邮件。
- 问题:**
用我的方法,我只得到第一个用户的详细信息,而不是所有的用户的预期。
- 如何确保调用数据库运行所有电子邮件并提供每封电子邮件的详细信息?**
1条答案
按热度按时间2hh7jdfx1#
首先,我们将其分解,以便使用函数返回给定电子邮件地址的所有记录:
现在我们有了一个函数来获取给定电子邮件的记录,我们可以使用
Array#map
来获取email
中每封电子邮件的结果。这些函数调用中的每一个都将返回一个Promise
,我们可以将其放入Promise.all
中以等待每一个完成。一旦它们都完成了,我们可以使用Array#flatMap
来检查每个调用返回的数组。将它们扁平化为一个大的HTML字符串数组,然后将它们连接在一起,最后更新showUserData
的内容。