我需要从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 }
);
}
}
);
答案 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 }
);
}
}
);