typescript - 如何使用 TypeScript 中编码的 CloudFunction 将 admin.firestore.FieldValue.serverTimestamp() 传递给 update() 方法
问题描述
如何将 admin.firestore.FieldValue.serverTimestamp() 传递给 update() 方法?我想将其插入数组中,如下所示:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp(functions.config().firebase);
exports.sendNote = functions.https.onCall(async(data,context)=>{
const numeroSender: string = data['numeroSender'];
const amisA = admin.firestore().collection('Amis').doc(numeroReceiver);
const connaissanceABBA:number = 3.0;
const version:number = 1;
const time = admin.firestore.FieldValue.serverTimestamp();
await amisA.update({
[`amis.${numeroSender}`] : [time,connaissanceABBA,version]
});
});
但我得到这个错误
Error: Update() requires either a single JavaScript object or an
alternating list of field/value pairs that can be followed by an
optional precondition. Value for argument "dataOrField" is not a valid
Firestore value. FieldValue.serverTimestamp() cannot be used inside of
an array (found in field `amis.+33651177261`.`0`).
at WriteBatch.update (/user_code/node_modules/firebase-
admin/node_modules/@google-cloud/firestore/build/src/write-
batch.js:367:23)
at DocumentReference.update (/user_code/node_modules/firebase-
admin/node_modules/@google-
cloud/firestore/build/src/reference.js:372:14)
at Object.<anonymous> (/user_code/lib/index.js:121:25)
at next (native)
at fulfilled (/user_code/lib/index.js:4:58)
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
解决方案
您可以使用 admin.firestore.Timestamp.now() 而不是 admin.firestore.FieldValue.serverTimestamp()
const time = admin.firestore.Timestamp.now();
await amisA.update({
[`amis.${numeroSender}`] :
{
connaissanceABBA: connaissanceABBA,
version: version,
ts: firebase.firestore.FieldValue.serverTimestamp()
}
});
});
推荐阅读
- spring - 如何使用 http url 从远程位置加载 i18 文件?
- cocoapods - Cocoapods - 我无法在我的 Mac 上安装 cocoapods。我正在按照 cocoapods.org 的步骤安装 cocoapods
- java - 尝试从 Servlet 连接时,Tomcat 看不到我的 CONTEXT.XML,我也使用 IDEA Intellij
- c# - CLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型
- java - 为什么标记为最终或静态的字段未保存在数据库中
- python - Ubuntu 18.04 python 2.7 urllib 请求未获取数据
- python - django:在我的网页中查看 python 脚本的结果
- raspberry-pi - 树莓派零和迷你热敏打印机问题
- swift - spritekit 无法从后台状态打印
- java - 如何在 Kotlin 中将功能接口操作作为参数传递?