【发布时间】:2021-08-20 11:59:40
【问题描述】:
因此,我正在使用 firebase 制作一个应用程序并将给定组的所有成员订阅到特定组主题,我需要创建一个函数来返回给定用户的所有组的数组。
我有一个 mongo 文件夹,它只返回“成员”、“管理员”或“所有者”字段包含其用户 ID 的所有组,例如我的是“9b8bcd57-06eb-471c-8910-c5b944d02431”。但是,返回您是所有者、管理员或成员的组的函数是单独的函数。
我对 NodeJs 还很陌生,还没有完全掌握 Promise。但是我在网上找到了一个例子
这是我尝试过的:
var p1 = new Promise ((resolve, reject) => { resolve( myMongo.retrieveDocuments('groups', { member: userId }) ) })
var p2 = new Promise ((resolve, reject) => { resolve( myMongo.retrieveDocuments('groups', { owner: userId }) ) })
var p3 = new Promise ((resolve, reject) => { resolve( myMongo.retrieveDocuments('groups', { admin: userId }) ) })
return Promise.all([p1, p2, p3])
}
这个 fetch 返回一个具有类似结构的数组。
{
[
[
{
"_id": "60e8341fe765650015db561f",
"groupName": "Club One",
"owner": [
"0bcbb92d-6276-4118-8576-9d5f5c4ed43b"
],
"timestamp": 1625830382197,
"premiumStatus": false,
"member": [
"f2171431-627e-47a3-a65f-4abf48d361b6",
"9b8bcd57-06eb-471c-8910-c5b944d02431"
],
"admin": [],
"pending": [],
"description": ""
},
{
"_id": "6117beac025a040016655483",
"groupName": "Club 2",
"owner": [
"c5c921b5-3ce7-450d-bf39-af027d07f5a2"
],
"timestamp": 1628945997774,
"premiumStatus": false,
"member": [
"9b8bcd57-06eb-471c-8910-c5b944d02431"
],
"admin": [],
"pending": []
}
],
[
{
"_id": "611e613e6d85ac0016f57e5d",
"groupName": "People",
"owner": [
"9b8bcd57-06eb-471c-8910-c5b944d02431"
],
"timestamp": 1629380919105,
"premiumStatus": false,
"member": [],
"admin": [],
"pending": []
}
],
[
{
"_id": "60f6dc43be54fb0015c16634",
"groupName": "UCD",
"owner": [
"79154a25-d747-441f-a8e3-4f06a2fbdaac"
],
"timestamp": 1626790968639,
"premiumStatus": false,
"member": [],
"admin": [
"2c7c2bc9-e1c3-4665-bcd9-2844fae6ac93",
"f8b4c3b7-0df8-4a14-a1fb-41c363337653",
"ea4d3222-caa2-40d5-80d8-54ce9a360c2b",
"9b8bcd57-06eb-471c-8910-c5b944d02431"
],
"pending": [],
"description": "Diamond by 2022"
},
{
"_id": "6116d1767e80f300166368e7",
"groupName": "Club",
"owner": [
"91dfdca2-6c2e-4784-91ed-d8ad4ffd8e25"
],
"timestamp": 1628885342939,
"premiumStatus": false,
"member": [],
"admin": [
"9b8bcd57-06eb-471c-8910-c5b944d02431"
],
"pending": [],
"description": "Ahhhhhhh"
}
]
]
如你所见,这个函数将所有的 Promise 一起返回到一个大的父数组中。我的问题是我需要内部数组括号 ('[' & '],') 消失。我试过分裂。但我不确定它是否适用于节点,并且我已经搜索了这个站点和许多其他站点以寻找答案。到目前为止,我听说过一种叫做“扁平化数组”的方法,但还没有找到合适的例子。
总结一下。
这就是我所拥有的:
[
[ thing1, thing2, thing3],
[ thing4, thing5, thing6],
[ thing7, thing8, thing9]
]
这就是我需要的:
[ thing1, thing2, thing3, thing4, thing5, thing6, thing7, thing8, thing9 ]
【问题讨论】:
-
您可以通过展开阵列或使用
Array.prototype.flat来展平阵列。 -
相信你只想flatten an array of arrays。此外,我猜
myMongo.retrieveDocuments已经是一个Promise,所以你可以摆脱所有new Promise ((resolve, reject) => { resolve(文学。你只是将一个 Promise 包装在另一个 Promise 中。
标签: javascript node.js arrays