我正在 node.js 中構建一個巴士票預訂應用程式。我創建了 4 個表。1 - users 表,2 - bus 表,3 - booking 表,4 - 路線表。
這是旅行模型:
const routeSchema = new mongoose.Schema({
departureLocation: {
name: {
type: String,
required: true,
},
subLocation: { type: [String] },
time: {
type: String,
required: true
}
},
arrivalLocation: {
name: {
type: String,
required: true,
},
subLocation: { type: [String] },
time : {
type: String,
required: true
}
},
duration: {
type: Number,
required: true,
},
busId:{
type: mongoose.Schema.Types.ObjectId,
ref:"Bus",
required: true
},
date: {
type:String,
required: true
},
},
{
timestamps: true,
});
在該行程模型中,只有管理員(經過身份驗證的用戶)可以添加有關行程的資料(如出發地點、到達地點、巴士資料和日期)
router.post("/addTrip", auth, async (req, res) => {
const route = new Route(req.body);
try {
await route.save();
res.status(201).send(route);
} catch (e) {
res.status(500).send();
}
});
假設有搜索框供用戶輸入像這樣的旅行的詳細資訊
https://i.stack.imgur.com/oXvsj.png
用戶輸入資料并將該資料轉換為查詢字串(如:127.0.0.1:3000/trips?departure=surat&arrival=bhavnagar&date=2022-05-30)并基于該查詢字串,我想顯示所有匹配的行程用戶。
現在我想根據用戶(以及未經身份驗證的用戶)的需要過濾資料,但我不知道該怎么做。
router.get("/trips", async (req, res) => {
if(!req.query.departure || !req.query.arrival || !req.query.date){
return res.send({
error: "Please enter the data to get the trip"})
}
let departure = req.query.departure;
let arrival = req.query.arrival;
let date = req.query.date;
let routes = await Route.find().lean().exec();
let route = routes.find((route) => {
route.departureLocation.name.toLowerCase() == departure &&
route.arrivalLocation.name.toLowerCase() == arrival &&
route.date == date;
//What to write here
});
})
我已經在巴士模型中嵌入了座位資料
const busSchema = new mongoose.Schema(
{
busNumber: {
type: String,
unique: true,
required: true,
},
seats: {
type: Number,
required: true
},
},
{
timestamps: true,
}
);
如何向用戶顯示可用于匹配行程的巴士和座位
uj5u.com熱心網友回復:
您可以filter使用以下find功能獲取資料:
router.get('/trips', async (req, res) => {
if (!req.query.departure || !req.query.arrival || !req.query.date) {
return res.send({
error: 'Please enter the data to get the trip',
});
}
let departure = req.query.departure;
let arrival = req.query.arrival;
let date = req.query.date;
let routes = await Route.find({
departureLocation: departure,
arrivalLocation: arrival,
date
}).lean().exec();
return res.status(200).json(router);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/480890.html
上一篇:服務器未以JSON格式回傳資料
