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

我有一个将一个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,以将多个地图对象添加到我的NoSQL文档中,例如:

[
    {
        "id": 45,"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函数以实现此目的?

BBQ20097758258 回答:如何将多个地图对象(JSON)添加到cloud-firestore数据库?

由于具有对象数组,因此需要遍历该数组,然后为每个对象创建一个文档。而且,由于您需要等到所有文档创建完毕后,才能使用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);
}
本文链接:https://www.f2er.com/3089934.html

大家都在问