Как я могу обновить поле в базе данных Firestore с помощью функции Google Cloud, когда другое поле изменяется? - PullRequest
0 голосов
/ 25 октября 2019

Я хочу написать простую облачную функцию Google для базы данных пожарного магазина, которая обновляет поле в документе, когда другое поле изменяется в том же документе. Триггерное поле называется «медь», и обновления будут выполняться в поле «медное значение». Я написал для этого простую функцию, она не выдает никакой ошибки, но она также не обновляет поле «coppervalue», поэтому я хотел бы узнать, где я делаю ошибку.

Вот мой код облачной функции:

const functions = require('firebase-functions');

exports.copperupdate = functions.firestore
        .document("/kullanici/{uid}")
        .onUpdate((change,context) => {
            const newfieldvalue = change.after.data();
            const fieldname = newfieldvalue.name;
            if(fieldname==="copper"){
                const d = new Date();
                const currenttime = d.getTime();
                const coppervalue = snap.data()['coppervalue'];
                const copperdate = snap.data()['copperdate'];
                const copperdec = (currenttime-copperdate)/1000
                const copper_real= (copperdec*copper/60)+coppervalue;
                const sonuccopper = Math.trunc(copper_real)
                return change.after.ref.set({
                    coppervalue: sonuccopper
                }, {merge: true});
            }else{
                return false;
            }
        });

Заранее спасибо.

1 Ответ

0 голосов
/ 26 октября 2019

Наконец-то разобрался;

Моя ошибка была в том, что я думал, что newfieldvalue.name обращался к имени поля, а не к полю «имени», поэтому я сделал несколько изменений, вот код

const functions = require('firebase-functions');

exports.copperupdate = functions.firestore
        .document("/kullanici/{uid}")
        .onUpdate((change,context) => {
            const newfieldvalue = change.after.data();
            const previousfieldvalue = change.before.data();
            if (newfieldvalue.copper === previousfieldvalue.copper){
                return false;
            }else{
                const d = new Date();
                const currenttime = d.getTime();
                const copper = newfieldvalue.copper;
                const coppervalue = newfieldvalue.coppervalue;
                const copperdate = newfieldvalue.copperdate;
                const copperdec = (currenttime-copperdate)/1000
                const copper_real= (copperdec*copper/60)+coppervalue;
                const sonuccopper = Math.trunc(copper_real)
                return change.after.ref.set({
                    coppervalue: sonuccopper
                }, {merge: true});
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...