我有一个函数可以将一个 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 作为键,值作为 name
、email
和 phone_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/