【发布时间】:2021-03-29 18:58:59
【问题描述】:
我正在为餐厅开发一个示例 API,我希望通过输入餐厅的名称来检索餐厅的数据。控制器、模型和路由器已设置,但如果我将其加载到 Postman 中,数据不会出现。请分享一些想法。
控制器:(restaurant.js)
const restaurants = require('../Models/restaurantData');
exports.getRestaurantName = (req, res) => {
const Name = req.params.name;
restaurants.find({
name: Name
}).then(result => {
res.status(200).json({
message: "Restaurant Data",
restaurants: result[0]
});
}).catch(error => {
res.status(500).json({
message: error
});
});
}
型号:(restaurantData.js)
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const restaurantSchema = new Schema({
_id: {
type: Number,
required: true
},
name: {
type: String,
required: true
},
city_name:{
type: String,
required: true
},
city_id: {
type: String,
required: true
},
location_id: {
type: Number,
required: true
},
area: {
type: Number,
required: true
},
locality:{
type: String,
required: true
},
thumb: {
type: String,
required: true
},
cost:{
type: Number,
required: true
},
address:{
type: String,
required: true
},
mealtype:{
type: Number,
required: true
},
name:{
type: String,
required: true
},
cuisine:{
type: Number,
required: true
},
type:{
type: Array,
required: true
},
Cuisine:{
type: Array,
required: true
}
});
module.exports = mongoose.model('restaurantData', restaurantSchema, 'restaurantData');
路由器:
const express = require('express');
const restaurantController = require('../Controllers/restaurant');
const router = express.Router();
router.get('/restaurantData/:name',restaurantController.getRestaurantName);
module.exports = router;
【问题讨论】:
-
你能在你传入url的控制台中看到名字
req.params.name吗? -
是的,名称显示在控制台中
-
console.log(result)在您的.then()处理程序中记录了什么? -
名字也在里面。
-
什么意思?它应该记录所有找到的与给定名称匹配的文档的数组。
标签: node.js mongodb api express mongoose