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

所以在创建“点”类时,我找到了用户并用 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

}


HUX布斯
浏览 153回答 1
1回答

蝴蝶不菲

根据您的评论更新您需要正确管理 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();// ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript