- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑将 Firestore 用于社交媒体提要的几个想法。到目前为止,我的想法还没有实现,所以对于这个想法,我希望得到社区的反馈。
这个想法是允许用户发布信息,或记录他们的事件,并向任何关注/订阅该信息的用户显示它。帖子信息将位于名为 posts
的根集合中。 .
据我所知,这些方法需要的读取和写入次数大致相同。
一种想法是在 users/{userId}
内拥有有一个名为 posts 的字段,它是一个我有兴趣为用户提取的 documentId 数组。这将允许我直接从 posts
拉并获取最新版本的数据。
另一种方法似乎更像是 Firebasey,它是将文档存储在 users/{userId}/feeds 中,这些文档是帖子本身的副本。我可以使用相同的 postID
如 posts
中的数据.据推测,如果我需要为任何评论更新数据,我可以使用组集合查询来获取所有称为提要的集合,其中 docID 是相等的(或者只是创建一个字段来执行正确的 "where", "==", docId
)。
第三种方法是更新应该查看帖子的人员列表。只要帖子列表比关注者列表短,这似乎更好。您不是在每个关注者上维护所有帖子,而是在每个帖子上维护所有关注者。对于每个新关注者,您都需要更新所有帖子。
此列表不会是用户自己的帖子。相反,它将是显示该用户的所有帖子的列表。
三个挑战者:
feed
- 指向全局帖子的文档 ID 数组。获取该提要,通过 ID 获取所有文档。每次用户有事件时,都需要为每个关注者更新每个数组。users (coll)
-> uid (doc)
-> uid.feed: postId1, postId2, postId3, ...] (field)
posts (coll)
-> postId (doc)
doc(users/{uid}).get(doc)
feed = doc.feed
for postId in feed:
doc(posts/{postId}).get(doc)
posts
的副本您希望该用户看到。每个事件/帖子都需要添加到每个相关的提要列表中。users (coll)
-> uid (doc)
-> feed: (coll)
-> postId1 (doc)
-> postId2
-> postId3
posts (coll)
-> postId (doc)
collection(users/{uid}/feed).get(docs)
for post in docs:
doc(posts/{post}).get(doc)
posts
的副本您希望该用户看到。每个事件/帖子都需要添加到每个相关的提要列表中。users (coll)
-> uid (doc)
posts (coll)
-> postId (doc)
-> postId.followers_array[followerId, followerId2, ...] (field)
collection(posts).where(followers, 'array_contains', uid).get(docs)
user
在每项事件中,找到所有关注该事件的用户
postId
来更新他们的数组。这将是 followerNumber 文档写入。
posts/{postId}
user
在每项事件中,找到所有关注该事件的用户
postId
的新文档至
users/{userId}/feed
这将是 followerNumber 文档写入。
users/{userId}/feed
获取一定数量的帖子
postId
的方法直接获取它似乎更合乎逻辑。
posts
获取一定数量的帖子哪里
uid == viewerUid
最佳答案
很好,当我谈论什么更优时,我真的需要一个点或一个质量属性来进行比较,我假设您关心速度(不是必要的性能)和成本。
这就是我解决问题的方法,它涉及多个集合,但我的目标只是 1 个查询。
用户(列)
{
"abc": {},
"qwe": {}
}
{
"123": {},
"456": {}
}
{
"abc": {
"posts_ids": ["123"]
}
}
{
"abc": {
posts: [
{
id: "123", /.../
}, {
id: "456", /.../
}
]
}
}
/* on your front end you can manage the add or delete ids from user posts */
export const calculateDashboard = functions.firestore.document(`users_posts/{doc}).onWrite(async(change, _context) {
const firestore = admin.firestore()
const dashboardRef = firestore.collection(`users_dashboard`)
const postRef = firestore.collection(`posts`)
const user = change.after.data()
const payload = []
for (const postId of user.posts_ids) {
const data = await postRef.doc(postId).get().then((doc) => doc.exists ? doc.data() : null)
payload.push(data)
}
// Maybe you want to exponse only certain props... you can do that here
return dashboardRef.doc(user.id).set(payload)
})
1 MiB (1,048,576 bytes)
,你可以存储大量数据,所以你可以在这里有很多帖子。让我们谈谈成本;我曾经认为 firestore 更像是有几个小文档,但我在实践中发现它在将大尺寸文档放入大量文档时同样有效。
const dashboard = firestore.collection(`users_dashboard`).doc(userID).get()
users_posts
,但也许您不想为帖子相关更改以外的其他内容触发此过程。
关于firebase - 哪个是用于获取社交媒体提要的最佳 Firestore 架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56551404/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
当我将 JSON 提要(Wordpress JSON 提要)解析到我的 React Native 提要页面时,我在模拟器中没有看到任何结果,以下是我正在使用的代码; ------------AppBo
我有一个网页,其中有一个搜索页面。我提供了一个用于搜索的“动态”RSS 提要,以便用户可以订阅他喜欢的任何搜索词的搜索结果。 所以我想知道如果该搜索词返回 0 个结果(这意味着我没有“项目”可放入提要
我想要测试我创建的 RSS Feed,我正在寻找一些好的 RSS Feed 应用程序来测试。 最佳答案 不要只是尝试一堆,看看它是否有效 - 验证它。让我为您谷歌一下: W3C RSS validat
我有一些 PHP 代码可以合并两个 RSS 提要。我试图按日期对提要进行排序,但我得到了一个有趣的结果: 两个 Feed 分别排序(第一个 Feed 先列出,然后第二个饲料) 第一个提要按升序排序,第
我最近开始使用“新 Google 表格”(电子表格),他们将 URL 更改为共享的公共(public)电子表格,我不确定如何获取电子表格数据的 JSON 提要。 基于来自此 URL 的数据:https
我想知道在您的应用程序中使用其他人的 RSS 提要(例如 BBC RSS 提要)是否存在任何法律问题? 最佳答案 你真的应该问律师。但是,我在 out-law.com 上找到了这个: Using a
我们有一个提供一些 RSS 提要的站点,我们想知道有多少人订阅了每个提要,而不使用像 FeedBurner 这样的系统来为他们提供服务。 解决这个问题的原始方法基本上是记录请求,然后获取请求每个提要的
我有一个系统可以获取几百个 RSS 提要。目前,它们的刷新周期为 10 分钟,但我最好让它更快。以近实时/推送间隔获取 RSS 源的策略是什么? 我遇到的一些解决方案: 1分钟取一次;如果没有变化,则
我已经开始开发一个网页,最近聘请了某人编写代码以在 http://farmball.com/ 的中间面板中显示自定义提要(由 API 提供支持)。 . 请注意,这不是与站点博客 相关联的 RSS 提要
有谁知道我在哪里可以找到这个页面的 json 提要? http://twitter.com/#!/microsoft 我找到的最接近的是这个: http://twitter.com/status/us
如何使用 nuget 命令禁用 SSL 证书检查? PS C:\Softwares> .\nuget.exe list Unable to load the service index forsour
我订阅了许多 RSS 提要,主要来自我自己的时区(英国:目前是 GMT+1,又名 BST)。不过我也对新西兰的新闻感兴趣(目前为 GMT+12)。 我的问题是由于我沉迷于需要将未读计数保持在或接近于零
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我在 vb.net 设置中使用 fullCalendar。我使用包含在 aspx 页面中的 JSON 提要将数据传递到日历,如下所示: events: "JSONcalendarFeed.aspx"
我的应用程序使用雅虎的天气信息 (XML) 来显示 future 5 天的天气预报。当邮政编码在美国时,这很有效。例如,下面的 url 为我提供了密歇根州富兰克林的提要。 http://xml.wea
我有一个显示我的 Instagram 动态的网站。以前我在用Instagram 遵循 API。用户/ self /媒体/最近 此 API 使用我生成一次的访问 token ,并在我的代码中作为变量保存
是否可以为特定关键字获取 BlogSpot 的 RSS 提要? 我已尝试使用以下 URL,但它们似乎不起作用。 Atom 1.0: https://blogname.blogspot.com/
Basecamp 对其 RSS 提要使用 HTTP 身份验证,但这意味着 Google Reader, Bloglines and Firefox/Safari RSS don't work . 是否
是否可以创建多语言的 RSS (2.0) 提要?假设我主要用英语( en )写博客,但有时我会创建德语( de )帖子。 RSS 规范中是否对此提供支持?我在 RSS spec 中找不到任何内容在这个
我是一名优秀的程序员,十分优秀!