exports.archiveChat = functions.firestore
.document('chats/{chatId}')
.onUpdate( snap => {
const data= snap.after.data();
const maxLen = 100;
const msgLen = data.messages.length;
const charLen = JSON.stringify(data).length;
const batch = db.batch()
if( charLen >= 10000 || msgLen >= maxLen){
const deleteCount = msgLen - maxLen <= 0 ? 1 : msgLen - maxLen
data.messages.splice(0,deleteCount);
const ref = db.collection("chats").doc(snap.after.id)
batch.set( ref, data ,{ merge : true });
return batch.commit();
} else{
return null;
}
})
不推荐使用no-before-declare。从TypeScript 2.9开始。请改用内置的编译器检查。 运行命令:npm --prefix“ $ RESOURCE_DIR”运行构建
functions @ build / Users / thedkn / Desktop / cmeraApp1 / functions tsc
src / index.ts:39:45-错误TS2532:对象可能是“未定义”。
39 const msgLen = data.messages.length; ~~~~
src / index.ts:46:31-错误TS2532:对象可能是“未定义”。
46个data.messages.splice(0,deleteCount); ~~~~
src / index.ts:50:47-错误TS2345:类型为'DocumentData |未定义”不能分配给“ DocumentData”类型的参数。 无法将“未定义”类型分配给“ DocumentData”类型。
50 batch.set(ref,data,{merge:true}); ~~~~
发现3个错误。
npm错误!代码ELIFECYCLE
npm ERR!错误2
npm ERR! functions @ build:tsc
npm ERR!退出状态2
npm ERR!
npm ERR!在functions @构建脚本上失败。
npm ERR! npm可能不是问题。上面可能还有其他日志记录输出。
npm错误!可以在以下位置找到此运行的完整日志: npm ERR! /Users/thedkn/.npm/_logs/2019-06-05T00_10_17_788Z-debug.log
错误:函数预部署错误:命令以非零退出码2终止 Dhirajs-Air:功能thedkn $
答案 0 :(得分:0)
const data= snap.after.data()
在没有“之后”快照的情况下可以返回undefined。只要您为TypeScript编译器启用了严格模式,您的代码就需要检查这一点。
const data= snap.after.data()
if (data) {
// now it's safe to use data because it's certain to be defined
}