Node.js 离子型4+;带无限滚动的分页rest api搜索过滤器
我用的是离子5.4.5。RestApi是使用node和express js创建的。 当我想搜索时,应用程序只是在第一页上查找数据。我希望应用程序搜索所有数据。我如何才能做到这一点 我们的api已分页。Node.js 离子型4+;带无限滚动的分页rest api搜索过滤器,node.js,angular,ionic-framework,ionic4,infinite-scroll,Node.js,Angular,Ionic Framework,Ionic4,Infinite Scroll,我用的是离子5.4.5。RestApi是使用node和express js创建的。 当我想搜索时,应用程序只是在第一页上查找数据。我希望应用程序搜索所有数据。我如何才能做到这一点 我们的api已分页。 app.get("/units", (req, res) => { let page = parseInt(req.query.page) let limit = parseInt(req.query.limit) if(!page && !limit){
app.get("/units", (req, res) => {
let page = parseInt(req.query.page)
let limit = parseInt(req.query.limit)
if(!page && !limit){
page = 1;
limit = 5;
}
let startIndex = (page -1) * limit
let endIndex = page * limit
let results = {}
if(endIndex < data.length){
results.next = {
page : page + 1,
limit : limit
}
}
if(startIndex > 0){
results.previous = {
page : page - 1,
limit : limit
}
}
results.results = data.slice(startIndex,endIndex)
res.json(results);
});
app.get("/units/:id", (req, res) => {
const itemId = req.params.id;
const item = data.find(_item => _item.id == itemId);
if (item) {
res.json(item);
} else {
res.json({ message: `item ${itemId} doesn't exist`})
}
});
我还使用服务从API获取数据。从API返回所有数据,并在应用程序上执行筛选和分页。或者在API中执行筛选和分页(按该顺序) 如果有很多数据行,最后一个选项可能更好,因为:
- 将所有行发送到应用程序将使用大量数据并花费大量时间,尤其是通过WiFi或移动数据连接
- 服务器上的处理通常比客户端上的处理快,尤其是在移动设备上
您可能还需要返回API中的总行数。我们的API已分页。我还创建了显示所有数据的路径。当我从分页链接发出请求时,它只是第一页的搜索。当我提取所有数据时,它不会搜索。我写的代码不是可以做到这一点吗?您需要使API支持搜索所有数据。除非你像@rveerd所说的那样获取所有数据,否则你不能在客户端进行。您可以检查:@ucnumara您的API只返回一个页面。你的应用程序只能过滤这些结果。您需要将筛选器(
val
)发送给API。您可以使用。首先过滤所有数据,然后在API中执行分页。将结果返回到应用程序。
getItems(ev) {
let val = ev.target.value;
if (val == '') {
this.loadUnit();
return;
}
if (val && val.trim() != '') {
this.unit = this.unit.filter((un,name) => {
return (un.name.toLocaleLowerCase().indexOf(val.toLocaleLowerCase()) > -1);
})
}
}