【发布时间】:2022-01-09 18:56:34
【问题描述】:
我是 Firestore 的新手。当我尝试通过函数 addSubject 中的 add 方法添加文档时,它会抛出错误“期望一个'String'类型的值,但得到一个'FieldValue'类型的值”。当我将字段设置为 DateTime.now() 时,我遇到了类似的错误。如何在文档中添加服务器时间戳?
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
Future<bool> addSubject(FirebaseFirestore x, FirebaseAuth auth, String subjectName) async{
try {
var doc = { "subject": subjectName };
await x.collection('subjects').add(appendCreateAudit(doc, auth));
} catch (e) {
print(e);
return false;
}
return true;
}
Map<String, dynamic> appendCreateAudit(Map<String, dynamic> x, FirebaseAuth auth) {
x["createdAt"] = FieldValue.serverTimestamp();
x["createdBy"] = auth.currentUser!;
x["updatedAt"] = FieldValue.serverTimestamp();
x["updatedBy"] = auth.currentUser!;
print(x);
return x;
}
Map<String, dynamic> appendUpdateAudit(Map<String, dynamic> x, FirebaseAuth auth) {
x["updatedBy"] = auth.currentUser!;
x["updatedAt"] = FieldValue.serverTimestamp();
return x;
}
可以将时间戳作为字符串发送,但这不是最佳解决方案。
- 有什么方法可以将时间戳变量存储在 Firestore 中,而无需先将其转换为字符串?
- 我正在尝试通过传递 FieldValue.serverTimestamp() 来指示服务器在字段上放置时间戳。可以通过flutter实现吗?
参考问题 Flutter: Firebase FieldValue.serverTimestamp() to DateTime object
【问题讨论】:
标签: flutter google-cloud-firestore flutter-web