Firebase云函数JS:如何正确生成含变量的Firestore文档引用路径?
解决Firebase Cloud Function中文档路径变量未解析的问题
你的问题出在字符串模板的语法错误:JavaScript中要解析${变量}这种占位符,必须使用**反引号()**包裹字符串,而你用了双引号("),导致${mid}和${formattedDate}`被当作字面量直接存入路径,没有替换成变量值。
修正方法
把定义url的代码里的双引号换成反引号即可:
const url = `order_reports/daily/${mid}/${formattedDate}`;
完整修正后的代码
exports.updateDailyOrderCount = functions.firestore .document("past_orders/{uid}/{mid}/{orderId}") .onCreate((snapshot, context) => { const orderData = snapshot.data(); const orderTimestamp = orderData.timestamp.toDate(); const formattedDate = formatDate(orderTimestamp); const mid = context.params.mid; const totalAmount = orderData.paymentDetails.totalAmount; const profit = orderData.paymentDetails.profit; console.log("formatted date:", formattedDate); // 替换为反引号实现变量解析 const url = `order_reports/daily/${mid}/${formattedDate}`; const dailyCounterRef = admin.firestore().doc(url); return dailyCounterRef.set({ count: admin.firestore.FieldValue.increment(1), totalAmount: admin.firestore.FieldValue.increment(totalAmount), profit: admin.firestore.FieldValue.increment(profit), date: formattedDate}, {merge: true}); });
原理说明:反引号是ES6引入的模板字符串语法,允许在字符串中直接嵌入变量或表达式,JavaScript会自动将${}中的内容替换为对应变量的实际值;而双引号包裹的是普通字符串,不会解析这类占位符。
内容的提问来源于stack exchange,提问作者Sameera Tennakoon
相关产品推荐
相关产品推荐

