gpt4 book ai didi

javascript - 将数组插入数组中包含的对象中

转载 作者:行者123 更新时间:2023-12-01 01:48:58 25 4
gpt4 key购买 nike

更新:感谢大家的帮助

我从 Firestore 获取 2 个集合: Angular 色和应用。应用程序是 Angular 色的子集合,因此它包含在 Angular 色集合内,因此,要获取应用程序,我需要先获取它们所在的 Angular 色文档。我这样做没有问题,但我需要保存它们,因为它们存储在 firebase 中以便稍后对它们进行分组,我不知道如何做。我想要一些这样的数据:

[
{
roleDescription: 'System Administrator',
active: true,
roleId: '1'
apps: [
{
appId: '2',
appDescription: 'Manage Roles',
groupId: '1',
route: 'roles',
appName: 'Roles',
active: true
},
{
appId: '1',
appDescription: 'Users',
groupId: '1',
route: 'users',
appName: 'Users',
active: true
},
{
...
}
]
},
{
active: true,
roleId: '2',
roleDescription: 'Employee',
apps: [
{
appId: '5',
appDescription: 'Upload Data',
groupId: '1',
route: 'roles',
appName: 'Roles',
active: true
},
{
appId: '1',
appDescription: 'Users',
groupId: '1',
route: 'users',
appName: 'Users',
active: true
},
{
...
}
]
}
]

目前我有这段代码,我可以获取快照中的所有 Angular 色并将它们映射以单独获取每个 Angular 色,然后使用 snapshot2 获取该 Angular 色中包含的应用程序也单独将 snapshot2 中的每个应用程序分配给该对象或也包含在数组中的 Angular 色数组。

这是我的代码:

ref.get()
.then(function(snapshot) {
return Promise.all(snapshot.docs.map(doc => {
var AppRole = {};
AppRole.role = doc.data();
roles.push(AppRole);
return doc.ref.collection('apps').get()
.then((snapshot2) => {
return snapshot2.docs.map(app => {
roles[count].apps = app.data(); // Here I need to push app.data() to roles[count].apps and problem solver but I don't know how to do it (roles[count].apps is an object and I know it doesnt have the push method but I tried with a counter also like roles[count].apps[i] = app.data(); i++; but no success )
})
})
console.log(count);
count++;
}))
.then(() => {
console.log(roles);
res.render("pages/roles", { name: req.session.name, idiom: req.session.idiom, roles: roles, apps: apps, pageInfo: req.session.lang.roles});
})

最佳答案

您应该能够在没有任何计数器的情况下执行此操作。我已经注释了代码中的主要更改。

基本上,只需在创建 Angular 色后保留对 Angular 色的引用即可。然后,您可以使用 map() 一次性为其分配应用程序列表。

const roles = []; // You can add and remove elements to a const array
const db = admin.firestore();
const ref = db.collection('roles');

ref.get()
.then(function(roleQuery) {
return Promise.all(roleQuery.docs.map(roleDoc => {
// ** Create a new role and keep a reference to it **
const role = roleDoc.data()
roles.push(role);
return roleDoc.ref.collection('apps').get()
.then((appQuery) => {
// ** Easily create a new array by calling
// ** map() on the app documents
role.apps = appQuery.docs.map(appDoc => {
return appDoc.data();
})
// ** alternate syntax:
// ** appQuery.docs.map(appDoc => appDoc.data())
})
}))
.then(() => {
console.log(roles);
res.render("pages/roles", { name: req.session.name, idiom: req.session.idiom, roles: roles, apps: apps, pageInfo: req.session.lang.roles});
})

关于javascript - 将数组插入数组中包含的对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51739647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com