【问题标题】:Firebase Functions trouble: (undefined) object is not iterable (cannot read property Symbol(Symbol.iterator))Firebase 函数问题:(未定义)对象不可迭代(无法读取属性 Symbol(Symbol.iterator))
【发布时间】:2021-02-20 14:20:24
【问题描述】:

我在运行 User onDelete Firebase Cloud Function 时收到错误 Error in function [undefined:: object is not iterable (cannot read property Symbol(Symbol.iterator))](我在函数中输入了错误),它是我的 User onCreate 函数的近镜像(就像一个魅力):

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const FS = admin.firestore();
const FA = admin.auth();

exports.newUser = functions.auth.user().onCreate(async(user)=>{
    const fTime = admin.firestore.Timestamp.now()
    const day = fTime.toDate().toLocaleDateString().replace('/','-').replace('/','-')
    const time = fTime.toDate().toLocaleTimeString('en',{hour12:false})+'.'+fTime.toDate().getMilliseconds()
    try {
        const act1 = FS.doc(`users/${user.uid}`).create({email:user.email})
        const act2 = FS.doc(`globalEvents/${day}`).set({[time]:{time:fTime,source:'Function newUser',description:`Account created for [${user.uid} - ${user.email}]`}},{merge:true})
        const promise = await Promise.all(act1,act2)
        return promise
    }
    catch (err) {
        return FS.doc(`globalEvents/${day}`).set({[time]:{time:fTime,source:'Function newUser',description:`Error in function [${err.code}:: ${err.message}]`}},{merge:true})
    }
})

exports.delUser = functions.auth.user().onDelete(async(user)=>{
    const fTime = admin.firestore.Timestamp.now()
    const day = fTime.toDate().toLocaleDateString().replace('/','-').replace('/','-')
    const time = fTime.toDate().toLocaleTimeString('en',{hour12:false})+'.'+fTime.toDate().getMilliseconds()
    try {
        const act1 = FS.doc(`users/${user.uid}`).delete()
        const act2 = FS.doc(`globalEvents/${day}`).set({[time]:{time:fTime,source:'Function delUser',description:`Account deleted for [${user.uid} - ${user.email}]`}},{merge:true})
        const promise = await Promise.all(act1,act2)
        return promise
    }
    catch (err) {
        return FS.doc(`globalEvents/${day}`).set({[time]:{time:fTime,source:'Function delUser',description:`Error in function [${err.code}:: ${err.message}]`}},{merge:true})
    }
})

对于那些使用 Firebase Cloud Functions 识别的人,我有“admin.initializeApp();”在 index.js 中,以及上面由 exports.newUser = users.newUser" & "exports.delUser = users.delUser 链接的 user.js 中

由于我布局它的异步性质(再次,onCreate 完美运行)它仍然会删除用户的文档,但会触发捕获并创建以下文档:

12:48:24.981
description
"Error in function [undefined:: object is not iterable (cannot read property Symbol(Symbol.iterator))]"
source
"Function delUser"
time
November 8, 2020 at 7:48:24 AM UTC-5

【问题讨论】:

    标签: javascript firebase google-cloud-functions


    【解决方案1】:

    这是因为 Promise.all() 接受单个参数,该参数必须是 Promise 的 iterable,例如 Array

    传递一个数组,如下await Promise.all([act1, act2]),而不是await Promise.all(act1,act2),就可以解决问题了。

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 2021-10-09
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2017-06-20
      • 1970-01-01
      • 2021-04-28
      相关资源
      最近更新 更多