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