将字段值存储在云函数变量中

时间:2019-11-13 08:56:05

标签: node.js firebase google-cloud-firestore google-cloud-functions

我需要从FIRE BASE FIRESTORE获取一个值并将其存储在云函数中的变量中 因为我想比较if语句中的两个变量,所以使用节点JS时,我使用的代码如下所示:

exports.helloWorld = functions.https.onRequest(
    (data, response) => {
        const bidder = admin.firestore();
        var old  = bidder.collection(data['collection'])
            .doc(data["doc_id"])
            .get();

        bidder.collection(data['collection'])
            .doc(data["doc_id"])
            .get()
            .then(
                data => {  
                    old =  data.data()['price'];
                }
            );

        var newprice = data["new price"];

        if (newprice <= old) {
            return response.status(500)
                .json({ message: 'Not Allowed.' });
        } else {
            return bidder.collection(data['collection'])
                .doc(data["doc_id"])
                .update(
                    { 
                        name_of_bidder: data["name_of_bidder"], 
                        price: data["price"],
                        phone: data["phone"],
                        capital: true
                    },
                    { merge: true }
                );
        }
    }
);

1 个答案:

答案 0 :(得分:0)

在文档参考上调用get()会返回一个Promise,因此您必须等待其结束才能访问数据。我认为您想要的是这个

exports.helloWorld = functions.https.onRequest(
    async (data, response) => {
        const bidder = admin.firestore();
        var oldDocument = await bidder.collection(data['collection'])
            .doc(data["doc_id"])
            .get();

        var old = oldDocument.data["price"];

        var newprice = data["new price"];

        if (newprice <= old) {
            return response.status(500)
                .json({ message: 'Not Allowed.' });
        } else {
            return bidder.collection(data['collection'])
                .doc(data["doc_id"])
                .update(
                    { 
                        name_of_bidder: data["name_of_bidder"], 
                        price: data["price"],
                        phone: data["phone"],
                        capital: true
                    },
                    { merge: true }
                );
        }
    }
);