因此,我试图在.hbs文件中调用一个函数,该函数检查用户何时到达底部附近,并调用两个.js文件来呈现和获取博客文章。我无法弄清楚如何在SQL查询中(在splitposts()
函数中)正确使用限制并提供部分内容
目前,我正在使用以下内容。
我的博客页面是从.js文件加载的,该文件使用手把帮助器呈现HTML页面。在博客页面的.js文件中,包含以下内容以获取帖子。
const td = {
posts: await tools.splitPosts(), //this is what gets the posts
page: await _db.find('blogpage', {}),
query: {}
}
由哪个呈现在同一文件中
res.render('blog/blog', td)
splitPosts()
函数位于另一个文件中,如下所示。目前返回5个帖子。
splitPosts: async () => {
try {
let posts = (await _db.rawSql('Select * from blog_posts limit 5 '))
.filter(post => post.status === 'published')
return posts
} catch (err) {
console.log(err)
return {}
}
}
在我的blog.hbs文件中,有以下脚本可以检查用户是否已到达底部附近。我的目标是在发生这种情况时调用splitposts()
函数。
$(window).scroll(function () {
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
console.log('test')
}
});
答案 0 :(得分:0)
解决方案1:
1)在第一个响应中发送start_from变量,该变量等于0+发送的总行数
2)在发出第二个请求时从后发送此开始。
3)在mysql中将其用作限制[start_from],[要发送的最大元素数]
缺点:您需要总数的行才能停止分页。
解决方案2:
仅当您在除最后一个结果之外的每个结果中始终发送固定数量的元素时,这才起作用。
1)在前端添加一个var page_count。
2)在每个请求上发送此请求。收到成功回复后,将其加1
3)当收到的元素数<所需的静态元素数时停止分页。
在后端
使用此页数乘以用作start_from的元素的静态数量