gpt4 book ai didi

javascript - 如何将多个 map 对象(JSON)添加到cloud-firestore数据库?

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

我有一个函数可以将一个 JSON 设置到我的 Cloud Firestore 数据库:

app.post('/api/add/collection/:collection_id/permission/:permission_id', (req, res) => {
(async () => {
try {
await db.collection(req.params.collection_id)
.doc(req.params.permission_id)
.set({
[req.body.id]: {
name: req.body.name,
email: req.body.email,
phone_number: req.body.phone_number
}
}, { merge: true}
);

return res.status(200).send('OK');
} catch (error) {
console.log(error);
return res.status(500).send('ERROR' + error);
}
})();
});

为了调用此函数,我将 JSON 正文传递给 POST 请求:

https://.../app/api/add/collection/USER_ID/permission/PERMISSION_id

{
"id": 45,
"name": "Stack",
"email": "stack@overflow.com",
"phone_number": "+48 111 222 333"
}

一切正常,此请求将此 JSON 设置为映射,其中 id 作为键,值作为 nameemailphone_number。但我想在一个请求中传递多个 JSON,以将多个 map 对象添加到我的 NoSQL 文档中,例如:

[
{
"id": 45,
"name": "Stack",
"email": "stack@overflow.com",
"phone_number": "+48 111 222 333"
},
{
"id": 46,
"name": "Stack2",
"email": "stack2@overflow.com",
"phone_number": "+48 222 222 333"
},
{
"id": 47,
"name": "Stack3",
"email": "stack3@overflow.com",
"phone_number": "+48 333 222 333"
}
]

如何修改我的 firebase 函数来实现此目的?

最佳答案

由于您有一个对象数组,因此您需要循环该数组,然后为每个对象创建一个文档。由于您需要等到所有文档都创建完毕,因此可以使用 Promise.all()。

类似这样的事情:

try {
await Promise.all(req.body.map((object) => {
return db.collection(req.params.collection_id)
.doc(req.params.permission_id)
.set({
[object.id]: {
name: object.name,
email: object.email,
phone_number: object.phone_number
}
}, { merge: true});
});
return res.status(200).send('OK');
} catch (error) {
console.log(error);
return res.status(500).send('ERROR' + error);
}

关于javascript - 如何将多个 map 对象(JSON)添加到cloud-firestore数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58891568/

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