Javascript 为什么这段代码会给出未定义的错误?火基云函数

Javascript 为什么这段代码会给出未定义的错误?火基云函数,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我有这段代码,用于从firebase集合中检索文档列表并将其处理为新列表 但它给出了错误信息: 错误:Update()需要单个JavaScript对象或字段/值对的交替列表,该列表后面可以跟一个可选的前提条件。参数“dataOrField”的值不是有效的Firestore值。无法将“未定义”用作Firestore值(在字段“myPick”中找到)。如果要忽略未定义的值,请启用ignoreUndefinedProperties 有什么问题吗 ps-当我测试调用“currentFoodPickLis

我有这段代码,用于从firebase集合中检索文档列表并将其处理为新列表

但它给出了错误信息:

错误:Update()需要单个JavaScript对象或字段/值对的交替列表,该列表后面可以跟一个可选的前提条件。参数“dataOrField”的值不是有效的Firestore值。无法将“未定义”用作Firestore值(在字段“myPick”中找到)。如果要忽略未定义的值,请启用
ignoreUndefinedProperties

有什么问题吗

ps-当我测试调用“currentFoodPickList[0].foodCondition”时,它给出了一个正确的值。因此,在处理“finalFoodList”时似乎出现了一些问题

ps2-使用ignoreUndefinedProperties设置后的新错误消息:

错误:Update()需要单个JavaScript对象或字段/值对的交替列表,该列表后面可以跟一个可选的前提条件。参数“dataOrField”的值不是有效的Firestore值。“未定义”值仅在对象属性中被忽略

ps3-如果有人能建议任何其他处理“currentFoodPickList”=>“finalFoodList”的方法,我将非常感谢

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

admin.initializeApp();
admin.firestore().settings({ ignoreUndefinedProperties: true })


exports.onFoodDocumentUpdate = functions.firestore.document('foods/{foodID}')
.onUpdate(async (change, context) => {

    const foodDataAfter = change.after.data();
    const currentFoodID = context.params.foodID

    const currentFoodPickList = await admin.firestore().collection('foods').doc(currentFoodID).collection('foodPickRecord').get().then(function(docs) {
        let res = []
        docs.forEach(doc => res.push(doc.data()));
        return res;
    })


    const finalFoodList = [];

    for (var f in currentFoodPickList) {
        for (var i = 0; i < f.amount; i++) {
            finalFoodList.push(f.foodCondition)
        }
    }

    return admin.firestore().collection('foods').doc(currentfoodID).update({
        myPick: finalFoodList[0]
    });
});
const functions=require('firebase-functions');
const admin=require('firebase-admin');
admin.initializeApp();
admin.firestore().settings({ignoreundinedproperties:true})
exports.onFoodDocumentUpdate=functions.firestore.document('foods/{foodID}'))
.onUpdate(异步(更改、上下文)=>{
const foodDataAfter=change.after.data();
const currentFoodID=context.params.foodID
const currentFoodPickList=wait admin.firestore().collection('foods').doc(currentFoodID.collection('foodPickRecord').get().then(函数(docs){
让res=[]
docs.forEach(doc=>res.push(doc.data());
返回res;
})
常量finalFoodList=[];
for(currentFoodPickList中的变量f){
对于(变量i=0;i
Firebase不接受
未定义的值。在
finalFoodList
中,检查是否有未定义的值。如果是这样,请使用错误消息建议的
ignoreundfinedproperties
设置。正如@Phiter所提到的,问题的解决方案和原因通过堆栈跟踪是清楚的。请使用
ignoreUndefinedProperties
设置尝试一下,以确认这解决了问题。@gso\u gabriel按照您的建议使用ignoreUndefinedProperties后,我收到了此错误消息=>error:Update()需要单个JavaScript对象或字段/值对的交替列表,可后跟可选的前提条件。参数“dataOrField”的值不是有效的Firestore值。“未定义”值仅在对象属性中被忽略。Hi@AndyYoung感谢您返回并确认其用法。这只是确认在代码中,列表中有一个
未定义的值。我建议您在每次出现
for
时打印列表中每个值的结果,以检查何时显示未定义的值。Firebase不接受
未定义的
值。在
finalFoodList
中,检查是否有未定义的值。如果是这样,请使用错误消息建议的
ignoreundfinedproperties
设置。正如@Phiter所提到的,问题的解决方案和原因通过堆栈跟踪是清楚的。请使用
ignoreUndefinedProperties
设置尝试一下,以确认这解决了问题。@gso\u gabriel按照您的建议使用ignoreUndefinedProperties后,我收到了此错误消息=>error:Update()需要单个JavaScript对象或字段/值对的交替列表,可后跟可选的前提条件。参数“dataOrField”的值不是有效的Firestore值。“未定义”值仅在对象属性中被忽略。Hi@AndyYoung感谢您返回并确认其用法。这只是确认在代码中,列表中有一个
未定义的值。我建议您在每次出现
时打印列表中每个值的结果,以检查未定义的值何时显示。