Flutter FireStore,用当前时间加上 5 分钟更新时间戳
Flutter FireStore, Update TimeStamp with current time plus 5 minutes
我正在将数据写入 Firestore DB,我成功地写入了它,然后根据时间戳顺序读取它。
现在我想用当前时间加上 5 分钟来更新某些 listId 的时间戳,但无法弄清楚,正在网上查看,但我能找到的例子只有 dart 以外的其他语言,并且想不通了。
写入数据
Future<void> addSentences(String listId) {
final Sentences = FirebaseFirestore.instance.collection('Sentences');
return Sentences.add({
'listId': listId,
'timeStamp': Timestamp.now(),
});
}
获取最早的 listId
void getOldestListId() async {
await for (var messages
in FirebaseFirestore.instance.collection("Sentences").orderBy("timeStamp").limit(1).snapshots()) {
for (var message in messages.docs.toList()) {
print(message.data());
Map we = message.data();
print(we['listId']);
}
}
}
尝试用 TimeStamp.now() 加 5 分钟来更新时间戳,但不知道该怎么做
void update() async {
var collection = FirebaseFirestore.instance.collection('sentences');
collection
.doc(listId) // <-- Doc ID where data should be updated.
.update(timeStamp: Timestamp.now() + minutes(5));
}
编辑
请注意,listId
是我保存到 Firestore 数据库中的值,而不是文档 ID,因此当我将 listId
替换为文档 ID I 时,它无法插入到 .doc(listId)
中在 Firestore DB .doc('idCopiedFromFireBaseConsole'),
中看到然后我可以用当前时间时间戳更新时间戳,但我仍然不知道如何获取文档 ID,我想我应该在 getOldestListId()
函数中获取文档 ID,我怎么能在那里获得正确的 ID?
void getOldestListId() async {
await for (var messages
in FirebaseFirestore.instance.collection("Sentences").orderBy("timeStamp").limit(1).snapshots()) {
for (var message in messages.docs.toList()) {
print(message.data());
Map we = message.data();
print(we['listId']);
}
}
}
这就是我如何将时间戳更新为当前时间 + 5 分钟
void update() async {
var collection = FirebaseFirestore.instance.collection('sentences'); collection.doc('idCopiedFromFireBaseConsole').update({'timeStamp': DateTime.now().add(const Duration(minutes: 5))});
编辑
现在它像我预期的那样工作,为其他有类似问题的人发布代码
向 FireStore 添加数据的函数
Future<void> addSentences(String sentenceId) {
final sentences = FirebaseFirestore.instance.collection('sentences');
return sentences.add({
'sentenceId': sentenceId,
'timeStamp': Timestamp.now(),
});
}
使用 addSentences()
向 Firestore DB 添加数据的循环
for (int i = 0; i <= 3; i++) {
//_sentenceList.length
addChineseSentences(i.toString());
}
获取最早的 sentenceId 的函数
late String _docId;
void getOldestSentence() async {
await for (var messages
in FirebaseFirestore.instance.collection("sentences").orderBy("timeStamp").limit(1).snapshots()) {
for (var message in messages.docs.toList()) {
_docId = message.id;
print(_docId);
Map we = message.data();
print(we['listId']);
}
}
}
更新句子时间戳的函数
void updateSentence() async {
var collection = FirebaseFirestore.instance.collection('sentences');
collection.doc(_docId) // <-- Doc ID where data should be updated.
.update({'timeStamp': Timestamp.fromDate(DateTime.now().add(const Duration(minutes: 5)))});
}
应该是这样的:
collection
.doc(listId)
.update(timeStamp: Timestamp(Timestamp.now(). millisecondsSinceEpoch + 5*60*1000);
Timestamp.now(). millisecondsSinceEpoch
为您提供当前时间(以毫秒为单位),然后我们将其加上 5 分钟(以毫秒为单位),并将组合值转换回 Timestamp
。
你能试试吗:
collection
.doc(listId) // <-- Doc ID where data should be updated.
.update(timeStamp: Timestamp.fromDate(DateTime.now().add(const Duration(minutes: 5))));
我正在将数据写入 Firestore DB,我成功地写入了它,然后根据时间戳顺序读取它。
现在我想用当前时间加上 5 分钟来更新某些 listId 的时间戳,但无法弄清楚,正在网上查看,但我能找到的例子只有 dart 以外的其他语言,并且想不通了。
写入数据
Future<void> addSentences(String listId) {
final Sentences = FirebaseFirestore.instance.collection('Sentences');
return Sentences.add({
'listId': listId,
'timeStamp': Timestamp.now(),
});
}
获取最早的 listId
void getOldestListId() async {
await for (var messages
in FirebaseFirestore.instance.collection("Sentences").orderBy("timeStamp").limit(1).snapshots()) {
for (var message in messages.docs.toList()) {
print(message.data());
Map we = message.data();
print(we['listId']);
}
}
}
尝试用 TimeStamp.now() 加 5 分钟来更新时间戳,但不知道该怎么做
void update() async {
var collection = FirebaseFirestore.instance.collection('sentences');
collection
.doc(listId) // <-- Doc ID where data should be updated.
.update(timeStamp: Timestamp.now() + minutes(5));
}
编辑
请注意,listId
是我保存到 Firestore 数据库中的值,而不是文档 ID,因此当我将 listId
替换为文档 ID I 时,它无法插入到 .doc(listId)
中在 Firestore DB .doc('idCopiedFromFireBaseConsole'),
中看到然后我可以用当前时间时间戳更新时间戳,但我仍然不知道如何获取文档 ID,我想我应该在 getOldestListId()
函数中获取文档 ID,我怎么能在那里获得正确的 ID?
void getOldestListId() async {
await for (var messages
in FirebaseFirestore.instance.collection("Sentences").orderBy("timeStamp").limit(1).snapshots()) {
for (var message in messages.docs.toList()) {
print(message.data());
Map we = message.data();
print(we['listId']);
}
}
}
这就是我如何将时间戳更新为当前时间 + 5 分钟
void update() async {
var collection = FirebaseFirestore.instance.collection('sentences'); collection.doc('idCopiedFromFireBaseConsole').update({'timeStamp': DateTime.now().add(const Duration(minutes: 5))});
编辑 现在它像我预期的那样工作,为其他有类似问题的人发布代码
向 FireStore 添加数据的函数
Future<void> addSentences(String sentenceId) {
final sentences = FirebaseFirestore.instance.collection('sentences');
return sentences.add({
'sentenceId': sentenceId,
'timeStamp': Timestamp.now(),
});
}
使用 addSentences()
向 Firestore DB 添加数据的循环
for (int i = 0; i <= 3; i++) {
//_sentenceList.length
addChineseSentences(i.toString());
}
获取最早的 sentenceId 的函数
late String _docId;
void getOldestSentence() async {
await for (var messages
in FirebaseFirestore.instance.collection("sentences").orderBy("timeStamp").limit(1).snapshots()) {
for (var message in messages.docs.toList()) {
_docId = message.id;
print(_docId);
Map we = message.data();
print(we['listId']);
}
}
}
更新句子时间戳的函数
void updateSentence() async {
var collection = FirebaseFirestore.instance.collection('sentences');
collection.doc(_docId) // <-- Doc ID where data should be updated.
.update({'timeStamp': Timestamp.fromDate(DateTime.now().add(const Duration(minutes: 5)))});
}
应该是这样的:
collection
.doc(listId)
.update(timeStamp: Timestamp(Timestamp.now(). millisecondsSinceEpoch + 5*60*1000);
Timestamp.now(). millisecondsSinceEpoch
为您提供当前时间(以毫秒为单位),然后我们将其加上 5 分钟(以毫秒为单位),并将组合值转换回 Timestamp
。
你能试试吗:
collection
.doc(listId) // <-- Doc ID where data should be updated.
.update(timeStamp: Timestamp.fromDate(DateTime.now().add(const Duration(minutes: 5))));