gpt4 book ai didi

firebase - Firestore 附加到数组(字段类型)一个带有服务器时间戳的对象

转载 作者:行者123 更新时间:2023-12-02 18:54:26 25 4
gpt4 key购买 nike

我想按照下面提到的代码向 Firestore 文档插入一个对象。但它抛出错误

   .update({
"comments": firebase.fieldValue.arrayUnion({
userId,
comment: data.comment,
createdAt: firebase.fieldValue.serverTimestamp(),
})

错误:

FirebaseError: Function FieldValue.arrayUnion() called with invalid data. FieldValue.serverTimestamp() can only be used with update() and set() (found in document...)

如何向推送的数组对象添加时间戳,或者是否有任何其他方法可以实现类似的结果?我从上面的错误中得到的是我不能在 arrayUnion

中使用时间戳

最佳答案

您不能将 FieldValue.serverTimestamp() 用作 arrayUnion 的值,因为该函数不会返回 timestamp,而是要在 set()update()。为此,您需要获得实际的 timestamp class值(value)。获取此值的方式与本地 SDK 和管理 SDK 不同,因此根据您使用的内容,您可以执行以下操作:

对于 Admin SDK:

import admin = require('firebase-admin');

const created_at = admin.firestore.Timestamp.now()

对于本地 SDK:

import { Timestamp } from '@google-cloud/firestore';

const created_at = Timestamp.now()

然后您可以通过执行以下操作来更新您的文档:

.update({
"comments": firebase.fieldValue.arrayUnion({
userId,
comment: data.comment,
createdAt: created_at,
})

关于firebase - Firestore 附加到数组(字段类型)一个带有服务器时间戳的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66347952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com