我正在尝试使用mongoose查询对我的页面进行分页。但是获取错误无法在发送后设置标头。如果在没有分页的情况下使用,排序工作正常。
我的错误在哪里。这个错误是什么意思?我的代码在下面
app.js
var options = {
perPage:3,
delta : 1,
page:5
};
app.get("/api/Productlist",function(req,res){
var query = ProductModel.find(function(err,items,count){
if(err){
var empty = {}
res.send(JSON.stringify(empty));
console.log("cannot finf data");
}else{
res.send(JSON.stringify(items));
}
}).sort({"name":1})
.paginate(options,function(err,items){
if(err){
console.log("Cant paginate");
}
console.log(items);
});
答案 0 :(得分:0)
一些事情:
1)你可以写res.json而不是res.send(JSON.stringify(object));
2)在您的数据库查询中,您将立即调用该函数并在分页完成之前发送响应。我发现,如果你不打算让你的应用程序规模很大,你可以使用跳过和限制,这是一个例子,希望它有所帮助。
yourModel.find().sort({name:1}).skip(0).limit(3).then(data=>{
if(data.length === 0){
let err = new Error();
err.message = "cannot find data";
err.status = 404;
res.status(err.status).json(err);
}
res.json(data);
});
3)如果你想保留当前的结构,这里有一个例子,你需要只调用一次你的函数,就像这样,不需要再查找然后再分页
ProductModel.find().sort({name:1}).paginate(yourOptions,function(err,items){
console.log(items)
})
答案 1 :(得分:0)
此代码工作正常,一次仅查询2条记录。但我想在页面编号的html页面上显示记录。如何使用此查询绑定html正文。
ProductModel.find().paginate(2,2).
exec(function(error,item){
if(error){
console.log("Error");
}else{
console.log(item);
res.send(JSON.stringify(item));
}
});