#firebase #google-cloud-firestore
#firebase #google-облако-firestore
Вопрос:
Я пытаюсь выполнить облачную функцию в Firebase. Изначально я прочитал свой документ. Тогда я бы взял два поля «a» и «b» из этого документа. Затем я хочу установить другое поле моего документа (‘rank’) как сумму ‘a’ и ‘b’. Я не могу найти решение! Я хочу взять только поля «a» и «b» из моего документа. Сохраните их в переменных. И используйте эти переменные для вычисления суммы и задайте результат в поле «ранг».
Я пытался:
var data = doc.data()
a = data.a
b = data.b
но это не работает.
Код:
export const daicazzo = functions.https.onRequest((request,response)=>{
const store = admin.firestore();
//var b;
store.collection('questions').doc('LD92BBDOihAC3fHDyoV').get().then(doc =>{
if(doc.exists){
response.send(doc.data())
}
else{
response.send("Nothing")
}
}).catch(reason => {
console.log(reason)
response.send(reason)
})
store.collection('questions').doc('LD92BBDOihAC3fHDyoV').set({
rank: //a b
})
.then(function() {
console.log("done");
})
.catch(function(error){
console.log("Error:",error);
});
});
Комментарии:
1. Вы должны записать новое значение обратно в документ. Оно не будет записываться само.
2. Вставьте код из изображения в вопрос, чтобы кто-нибудь мог проверить проблему.
3. @Fire-In-D-Hole Или «вставьте» его.
4. @DougStevenson Приносим извинения за вставленную в код опечатку.
Ответ №1:
Должно выполнить работу (могут быть некоторые лучшие решения)
const store = admin.firestore();
export const daicazzo = functions.https.onRequest(async (request,response)=>{
const questionRef = store.doc(`questions/${LD92BBDOihAC3fHDyoV}`)
const doc = await questionRef.get()
const foundDoc = doc.exists
if (foundDoc) {
// getting both key/value pairs from doc object
const {a, b} = doc.data()
const rank = a b // whatever is your logic...
// saving the rank in the same document
await questionRef.update({rank}) // or questionRef.set({rank}, {merge: true})
if you want to send back the doc with the updated rank without making another read, assuming you handle errors:
const { id } = doc
const updatedDoc = { ...doc.data(), id, rank }
return response.send(updatedDoc)
} else {
return response.send("Nothing")
}
});