2017-01-16 2 views
0

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

このコードは一度に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)); 
      } 
    }); 
0

いくつか下の私のコード:あなたが)の代わりにres.send(JSON.stringify(オブジェクト)のres.jsonを書くことができます

1)。

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) 
}) 
+0

返信ありがとうございます。私はあなたのオプション3を使用しましたが、ProductModel.find()エラーを表示していますsort({name:1})。paginate ... function.hereは私のコードapp.get( "/ api/Productlist" (エラー、アイテム){ if(err){ \t console.log( "cant find data(エラーが発生しました)"というエラーメッセージが表示されます。 「);} 他{\t res.send(JSON.stringify(アイテム));} \t}); \t})。 – chitra

関連する問題