在每个资源上引入 $createdAt 和 $updatedAt 属性
Appwrite是一款开源的后端即服务 (BaaS),它通过提供一套 REST API 来满足您的核心后端需求,从而抽象化构建现代应用程序的所有复杂性。Appwrite 可以处理用户身份验证和授权、实时数据库、云函数、Webhook 等等!
在最新的0.15 版本中,我们引入了许多令人兴奋的新功能,其中之一是新增了两个时间戳属性$createdAt和$updatedAt🥳。我们将在本文中讨论它们的用途。
👀 最新动态
从0.15 版本开始,您应该可以在资源中看到两个新添加的属性。您只需在控制台中点击文档的“以 JSON 格式查看”选项即可查看。导航至“数据库”->“[您的数据库]”->“[您的集合]”->“[任意文档]”,您应该会在右侧看到“以 JSON 格式查看”选项。点击该选项即可显示新添加的属性。
顾名思义,` $createdAtcreatedTime` 和 `lastmodableTime` 分别存储资源的创建时间和$updatedAt最后修改时间,两者均以UNIX 时间格式(秒)表示。这些新增属性为开发者提供了更大的灵活性,并简化了某些用例的实现。让我们来看看它们是如何运作的!😎
🧠 使用案例
1) ⚡ 文档排序
其中一个应用场景是能够根据最新/最旧对文档进行排序。这在聊天应用中非常理想。
如果要按最新排序,只需将新添加的属性用作排序参数即可:
import { Databases } from "appwrite";
const databases = new Databases(client, '[DATABASE_ID]'); // client should be Appwrite Client
const documents = await databases.listDocuments(
'[COLLECTION_ID]',
undefined,
undefined,
undefined,
undefined,
undefined,
['$createdAt'],
['DESC'],
);
这将提取按最新创建时间排序的文档列表。
2) 🕒 显示时间信息
在博客应用中,您可能需要显示博文的发布时间。另一个例子是问答论坛应用,您也可能需要显示内容的最后更新时间。
你可以通过打印来自 Appwrite 的时间戳的日期来实现这一点:
import { Databases } from "appwrite";
const databases = new Databases(client, '[DATABASE_ID]'); // client should be Appwrite Client
const document = await database.getDocument('[COLLECTION_ID]', '[DOCUMENT_ID]');
const created = new Date(document.$createdAt * 1000); // Date class expects milliseconds
const updated = new Date(document.$updatedAt * 1000);
console.log(`Document was created on ${created.toGMTString()}, and last updated on ${updated.toGMTString()}.`);
3) 🤖 查询文档
新增的属性也可以与查询 API 一起使用。如果您只想在应用程序的“最新”$createdAt选项卡下列出最近 7 天内创建的文档,只需在查询中使用以下语句即可:
import { Databases, Query } from "appwrite";
const databases = new Databases(client, '[DATABASE_ID]'); // client should be Appwrite Client
const lastWeekTimestamp = Date.now() - 604800000;
const documents = await databases.listDocuments(
'[COLLECTION_ID]',
[ Query.greaterEqual('$createdAt', lastWeekTimestamp) ]
);
这将导入最近 7 天内创建的文档。
以上列举了一些属性的基本用途。以前,这些功能只能通过云函数实现,因此实现起来比较复杂。但得益于最新版本🥳,这些用例变得更加容易实现。现在,开发者可以根据自身需求来使用这些属性。一般来说,这些属性可用于审核系统数据、订单数据、查询数据以及显示时间信息。
至此,我们的分享就结束了🤩。如果您有项目想要分享、需要帮助,或者只是想成为 Appwrite 社区的一份子,我非常欢迎您加入 Appwrite 官方Discord 服务器。
📚了解更多
您可以利用以下资源了解更多信息并获得帮助:
文章来源:https://dev.to/appwrite/introducing-createdat-and-updatedat-on-each-resource-5pa
