【发布时间】:2021-01-30 09:21:06
【问题描述】:
我正在使用 firebase 构建一个简单的 react-native 应用程序,用户可以在其中创建帖子,查看其他用户帖子的列表,并且可以将帖子保存为“已保存帖子”作为我的用户集合中的子集合。
我是 react-native 和 firebase 新手,所以这只是为了教育目的。
我在为我的“已保存”列表查询帖子时遇到了困难。目前,当用户单击“保存”按钮时,会在帖子 ID 中添加(或创建)“已保存帖子”的子集合。我不想将整个帖子数据重写到用户保存列表,只是为了通过帖子 ID 创建对帖子的引用。
我能够保存列表,但无法在 firestore 中查询与每个帖子 ID 关联的文档。
目前我可以根据用户id查询自己的帖子列表,因为authorID与用户uid匹配,我认为获取保存的帖子会相似。
这是我获取用户自己的帖子列表的代码:
userId 是表示 user.uid 的单个字符串
const getUserPosts = async (userId) => {
const snapshot = await firebase
.firestore()
.collection('posts')
.where('authorID', '==', userId)
.get();
let data = snapshot.docs.map((doc) => ({ id: doc.id, ...doc.data() }));
return data;
};
这个函数被导出,然后包装在组件内的 try catch 语句中。
上述内容与获取已保存帖子的用户列表之间的区别在于,我需要输入多个不同的“postId”(相对于单个 userID),但 .get() 方法不接受用于第一个参数,它需要一个字符串。
为了快速总结,我需要一个方法或函数,我可以在其中获取一个 postId 数组并查询我的帖子集合以返回 doc.id 与提供的 postId 匹配的那些帖子。
如果这不清楚或令人困惑,我深表歉意,我对此有点迷茫。
非常欢迎任何建议。
非常感谢您的宝贵时间!
【问题讨论】:
标签: javascript reactjs firebase react-native google-cloud-firestore