我試圖在我的移動應用程序上使用nodejs的API後端實現find()函數。因此API的路線是這樣的:Node.js API響應空json
app.use('/api', apiRoutes);
apiRoutes.use('/rooms', roomRoutes);
roomRoutes.post('/search', RoomController.searchRooms);
這是我的控制器,與空的JSON所有的時間響應函數:
exports.searchRooms = function (req, res) {
Room.find({
type: req.body.roomType,
beds: req.body.beds,
max_occupancy: { $gt: req.body.guests },
cost_per_night: { $gte: req.body.priceRange.lower, $lte: req.body.priceRange.upper },
reserved: {
$not: {
$elemMatch: { from: { $lt: req.body.to.substring(0, 10) }, to: { $gt: req.body.from.substring(0, 10) } }
}
}
}, function (err, rooms) {
if (err) {
res.send(err);
} else {
res.json(rooms);
}
});
}
該功能尋找酒店的免費客房。 這是我如何調用API從我的應用程序:
searchRooms(options){
return new Promise(resolve => {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('http://localhost:8080/api/rooms/search', JSON.stringify(options), {headers: headers})
.map(res => res.json())
.subscribe(data => {
resolve(data);
});
});
}
任何人都可以點我怎麼可能是錯的?
您確定需要將請求中的選項串聯起來嗎?你做了什麼樣的調試('console.log(req.body)' - 服務器是否收到請求數據?)如果你打印出查詢並在數據庫中手動運行它,它是否會返回文檔? – JJJ
是的,我已經做到了這一點,服務器正在接收請求數據,我也記錄(res.body),它返回空數組,所以我的方法必須有錯誤。我可以在我的mongo數據庫中瀏覽集合,並且有用於測試目的的示例數據。 –