javascript - 为什么这段代码会给出未定义的错误?firebase 云功能
问题描述
我有这段代码用于从 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]
});
});
解决方案
推荐阅读
- python - 根据前两个字母替换部分熊猫数据框列
- apache-flink - Flink CEP:FollowedBy 模式:同一事件多次循环该模式
- swift - 从 Swift Code 以 root 身份执行终端命令
- python - 在python中缩进if和else语句
- azure-ad-b2c - 在 Azure Active Directory B2C 自定义策略中通过电子邮件查找现有用户
- r - R httr Linkedin API:错误请求(HTTP 400)
- html - 相对于彼此缩放 svg 组
- typescript - Typescript - 联合类型和泛型类型引发不兼容错误
- windows - 从 Windows Server 获取 iSCSI 设备的目标 IP 地址
- excel - VBscript复制范围并将特殊转置粘贴到变量位置的行