gpt4 book ai didi

firebase - 如何在 TypeScript 数据模型中使用 FieldValue ServerTimestamp?

转载 作者:行者123 更新时间:2023-12-04 08:04:07 24 4
gpt4 key购买 nike

我正在使用 TypeScript 在 Firebase 中为我的文档定义数据模型。创建文档时,createdOn字段将是服务器时间戳,否则它是一个日期。例如...

export interface Post<MODE extends 'create' | 'read'> {
comment: string;
createdOn: MODE extends 'create' ? FieldValue : Date;
}
我不知道如何正确定义并分配给 createdOn 属性。首先,我不确定要从哪个 firebase 模块加载 FieldValue 类型。我能做的最好的就是这个,这似乎有点做作......
import * as firebase from 'firebase';
type FieldValue = firebase.default.firestore.FieldValue;
export const SERVER_TIMESTAMP = firebase.default.firestore.FieldValue.serverTimestamp();
然后当我使用它时,就会发生这种情况......
// Fails when used within cloud function
// Detected an object of type "FieldValue" that doesn't match the
// expected instance (found in field "createdOn"). Please ensure
/// that the Firestore types you are using are from the same NPM package.

post.createdOn = SERVER_TIMESTAMP;

// But this works within cloud function

post.createdOn = admin.firestore.FieldValue.serverTimestamp();
从云函数内部和客户端调用时,FieldValue 的类型是否不同?我可以简单地从一些适用于云功能和客户端的模块中导入这种类型吗?

最佳答案

我认为这是与 javascript SDK 混淆的已知限制问题。
https://github.com/firebase/firebase-js-sdk/issues/4246
如果您从管理应用程序在 Firestore 中创建项目,则需要使用与从客户端应用程序创建项目不同的“serverTimestamp”对象。

关于firebase - 如何在 TypeScript 数据模型中使用 FieldValue ServerTimestamp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66306533/

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