【发布时间】:2020-07-16 04:52:54
【问题描述】:
所以我正在制作一个社交媒体应用程序,现在一切都很好。最后一个问题是,每次我打开应用程序时,API 都会获取所有帖子,现在这已经是个问题了。我试图阅读所有资料以了解如何制作,但现在我被卡住了。
我的应用使用 Firebase + Redux + React,所以实现起来比其他应用要难一些。我创建了一个函数来获取第一组帖子列表,它工作正常,但列表的第二个函数返回与第一个函数相同,即使我插入 startAfter() 和 limit()
我想要什么:我希望第二个函数为我获取下一个帖子查询,而不复制第一个函数中的任何帖子,我还想了解我需要在 startAfter 中传递什么
现实:第二个函数确实运行,它确实获得了新帖子,但它是相同的帖子,所以如果我的列表有 5 个帖子,它会返回 2 组 3 个看起来相同的帖子
这是我使用 Firebase 的第一个功能:
exports.getFirstSetOfPosts = (req, res) => {
db.collection('posts')
.orderBy('createdTime', 'desc')
.limit(3)
.get()
.then(data => {
let lastVisible = data.docs[data.docs.length-1];
let posts = [];
data.forEach(doc => {
posts.push({
postID: doc.id,
body: doc.data().body,
userHandle: doc.data().userHandle,
createdTime: doc.data().createdTime,
commentCount: doc.data().commentCount,
likeCount: doc.data().likeCount,
userImage: doc.data().userImage,
imagePostUrl: doc.data().imagePostUrl
});
});
return res.json( {posts,last: lastVisible});
})
.catch( (err) => {
console.log(err);
res.status(500).json({ error: err.code });
});
}
这是我获取下一篇文章的第二个功能:
exports.fetchMoreData = (req, res) => {
db.collection('posts')
.orderBy('createdTime', 'desc')
.startAfter(req.params.last)
.limit(3)
.get()
.then(data => {
let lastVisible = data.docs[data.docs.length-1];
let posts = [];
data.forEach(doc => {
posts.push({
postID: doc.id,
body: doc.data().body,
userHandle: doc.data().userHandle,
createdTime: doc.data().createdTime,
commentCount: doc.data().commentCount,
likeCount: doc.data().likeCount,
userImage: doc.data().userImage,
imagePostUrl: doc.data().imagePostUrl
});
});
return res.json( {posts,last: lastVisible});
})
.catch( (err) => {
console.log(err);
res.status(500).json({ error: err.code });
});
};
Image about my posts list 有人可以帮助我:(我几天来一直在寻找答案。
_ req.params.last obj : enter image description here
_一篇文章的数据结构: enter image description here
【问题讨论】:
-
req.params.last的值是多少。看起来,它应该是最后提供的帖子的createdTime的值。由于处于测试阶段,请确保所有时间戳都不同。 -
等等什么??它应该是 createdTime 的值? =v= LOL 我得到了 req.params.last 就像我刚刚添加的对象一样
-
经过多次尝试,req.last.params 对我来说仍然是一个问题,我已经尝试像你上面说的那样将 createdTime 传递到我的应用程序中,但它仍然无法正常工作,你能看看我之前添加的对象,看看我应该将哪个对象推送到我的函数中?
-
您发送的是什么价值以及文档的外观如何?
-
我将 _fieldsProto 的 createdTime 添加到 req.params.last 中,但它根本不起作用,但如果我只添加 req.params.last,它会获取所有帖子,尽管我使用了 startAfter。关于我刚刚在上面添加的一篇文章的文档
标签: reactjs firebase redux infinite-scroll