我的查詢字串搜索沒問題,但唯一的問題是洗掉和顯示所有資料時...:-(
我的代碼在這里
router.get('/allStudents', async (req,res) => {
const limit = parseInt(req.query.limit, 4) || 4;
const page = parseInt(req.query.page, 10) || 1;
const PAGE_SIZE = 10;
const skip = (page - 1) * PAGE_SIZE;
try {
const stdID = await Student.paginate({stdID: req.query.stdID}, {limit, page,
skip}) //OK it works!!! but as its remove it wont display the whole data (data:[])
return res.status(200).json({
success: true,
data: stdID
})
} catch (err) {
console.log(err);
}
});
uj5u.com熱心網友回復:
添加搜索條件
router.get('/allStudents', async (req,res) => {
const limit = parseInt(req.query.limit, 4) || 4;
const page = parseInt(req.query.page, 10) || 1;
const PAGE_SIZE = 10;
const skip = (page - 1) * PAGE_SIZE;
try {
if (req.query.stdID.length >= 0){ // or (req.query.stdID!==null || req.query.stdID!== undefined)
const stdID = await Student.paginate({stdID: req.query.stdID}, {limit, page,
skip}) //OK it works!!! but as its remove it wont display the whole data (data:[])
}
else {
const stdID = await Student.paginate({}, {limit, page,
skip})
return res.status(200).json({
success: true,
data: stdID
})}
} catch (err) {
console.log(err);
}
});
uj5u.com熱心網友回復:
@mohammad Naimi 的回答是對的,但要通俗地解釋一下 -->
當您傳入資料stdID時req.query,您的 mongo 查詢就如您所說的那樣正常作業,但是當您洗掉所有資料時,它會生成req.query.stdID一個空欄位,從而導致錯誤,因為沒有req.query.
您可以按照上面的 Mohammad 所示傳遞它,也可以使用三元運算子。
let mongoQuery = req.query.stdID ? {stdID: req.query.stdID} : {} ;
并傳入mongoQuery您的分頁功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/345385.html
