第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

云功能中未定義的用戶名?

云功能中未定義的用戶名?

泛舟湖上清波郎朗 2021-07-06 17:07:44
我想向特定設(shè)備發(fā)送通知,所以我編寫了此函數(shù)及其工作正常,但我在用戶名中未定義日志輸出:得到這個(gè)after: { '-LhjfwZeu0Ryr6jYRq5r': { Price: '888', date: '2019-6-19', description: 'Ghh', id: 50, nameOfProblem: 'Vbh', providerName: 'Loy', providerService: 'Carpenter', statusInfo: 'Incomplete', time: '15:22', username:"devas" }}而且username是undefined這是函數(shù)exports.sendPushR = functions.database.ref('/request/{pid}/{uid}/orders')    .onWrite(async (snapshot, context) => {        const registrationTokens = "------";        const providerId = context.params.pid;        const userId = context.params.uid;        const event = context.params;        console.log("event", event);        console.log(`New Order from ${userId} to ${providerId}`);        const afterData = snapshot.after.val(); // data after the write        const username = snapshot.after.val().username;        console.log(afterData);        console.log(username);        const payload = {            notification: {                title: 'Message received',                body: `You received a new order from ${username} check it now! `,                sound: "default",                icon: "default",            }        };        try {            const response = await admin.messaging().sendToDevice(registrationTokens, payload);            console.log('Successfully sent message:', response);        }        catch (error) {            console.log('Error sending message:', error);        }        return null;    });
查看完整描述

2 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

看起來您編寫的代碼旨在在將新訂單添加到數(shù)據(jù)庫時(shí)運(yùn)行。但是你已經(jīng)聲明它像這樣觸發(fā):


exports.sendPushR = functions.database.ref('/request/{pid}/{uid}/orders')

    .onWrite(async (snapshot, context) => {

這意味著只要在orders節(jié)點(diǎn)下為用戶編寫任何內(nèi)容,代碼就會(huì)觸發(fā)。要僅在該orders節(jié)點(diǎn)下寫入訂單時(shí)觸發(fā),請(qǐng)將觸發(fā)器定義為:


exports.sendPushR = functions.database.ref('/request/{pid}/{uid}/orders/{orderid}')

    .onWrite(async (snapshot, context) => {

上面的區(qū)別在于,路徑現(xiàn)在包含{orderid}意味著它會(huì)觸發(fā)樹中的低一級(jí),并且您snapshot.after將不再包含該-L級(jí)別。


由于您實(shí)際上似乎只關(guān)心訂單何時(shí)被創(chuàng)建,因此您也只能觸發(fā)它(這意味著當(dāng)訂單被更新或刪除時(shí),您的函數(shù)不會(huì)被調(diào)用)。那會(huì)是這樣的:


exports.sendPushR = functions.database.ref('/request/{pid}/{uid}/orders/{orderid}')

.onCreate(async (snapshot, context) => {

    ...

    const afterData = snapshot.val();

    const username = snapshot.val().username;

    console.log(afterData);

    console.log(username);

    ...

});

在這里,我們?cè)俅卧?JSON 中的較低級(jí)別上觸發(fā)。但是由于我們現(xiàn)在 trigger onCreate,我們不再有前后快照,而是只是snapshot.val()為了獲取剛剛創(chuàng)建的數(shù)據(jù)。


查看完整回答
反對(duì) 回復(fù) 2021-07-08
?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

由于您正在檢索的對(duì)象具有生成的成員,您可以使用 for-in 循環(huán)來檢索該值。


const object = snapshot.after.val()

for(const key in object) {

    if (object.hasOwnProperty(key)) {

        const element = object[key];

        if(element.username) {

             console.log(element.username);

             break;

        }  

    }

}


查看完整回答
反對(duì) 回復(fù) 2021-07-08
  • 2 回答
  • 0 關(guān)注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)