为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 云解析错误:意外的令牌管理

Firebase 云解析错误:意外的令牌管理

HUX布斯 2023-03-03 10:51:12
所以在创建“点”类时,我找到了用户并用 100(num 值)更新了它的点,但我一直在意外地收到 referuserRef 这是我的代码const functions = require('firebase-functions');      const admin = require('firebase-admin');    admin.initializeApp();exports.pointsCreated = functions.firestore        .document('points/{pointsid}')        .onCreate((snap, context) => {                        const newValue = snap.data();            if (newValue['type'] !== null) {                if (newValue['type'] === 'refer') {                    const referuserRef = admin.firestore().collection('users').doc(newValue['user']); //this is where i get the error                    console.log("referuserRef");                    console.log(referuserRef);                    const referuserDoc = await referuserRef.get()                    if (referuserDoc.exists) {                        referuserRef.set({ points: Number(referuserDoc.data()['points']) + 100 }, { merge: true });                    }                }            }        });这是 package.json 和 .eslintrc.json 有“ecmaVersion”:7(我也试过 8,但每次我尝试时它都给了我同样的错误{  "name": "functions",  "description": "Cloud Functions for Firebase",  "scripts": {    "lint": "eslint .",    "serve": "firebase emulators:start --only functions",    "shell": "firebase functions:shell",    "start": "npm run shell",    "deploy": "firebase deploy --only functions",    "logs": "firebase functions:log"  },  "engines": {    "node": "10"  },  "main": "index.js",  "dependencies": {    "firebase-admin": "^8.10.0",    "firebase-functions": "^3.6.1"  },  "devDependencies": {    "eslint": "^5.12.0",    "eslint-plugin-promise": "^4.0.1",    "firebase-functions-test": "^0.2.0"  },  "private": true}
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

根据您的评论更新

您需要正确管理 Cloud Function 的生命周期,方法是等待异步 Firebase 方法调用完成,然后再向 Cloud Function 平台指示它可以清理您的函数。有关详细信息,请参阅此文档。


因此,以下应该可以解决问题:


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

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

const FieldValue = require('firebase-admin').firestore.FieldValue;

admin.initializeApp();


exports.pointsCreated = functions.firestore

    .document('points/{pointsid}')

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


        try {

            const newValue = snap.data();

            if (newValue['type'] !== null) {

                if (newValue['type'] === 'refer') {

                    const referuserRef = admin.firestore().collection('users').doc(newValue['user']);

                    const referuserDoc = await referuserRef.get();

                    if (referuserDoc.exists) {

                        await referuserRef.set({ points: FieldValue.increment(100) }, { merge: true });

                        return null;

                    } else {

                        return null;

                    }

                } else {

                    return null;

                }

            } else {

                return null;

            }

        } catch (error) {

            // ...

            return null;

        }


    });

请注意使用 来FieldValue增加字段的值points。


旧答案:


您似乎没有加载 Cloud Functions SDK。你应该这样做:


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


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

admin.initializeApp();


// ...


查看完整回答
反对 回复 2023-03-03
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信