我有这段代码,用于从Firebase集合中检索文档列表并将其处理为新列表。
但是它给出了错误信息:
错误:Update()需要单个JavaScript对象或字段/值对的交替列表,其后可以有一个可选的前提条件。参数“ dataOrField”的值不是有效的Firestore值。无法将“ undefined”用作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]
});
});