node.js - 如何调试 GET Express 路由器的问题
问题描述
我使用 MEAN 堆栈开发游戏,因此我需要使用 Node 和 MongoDB 创建 API 来存储分数并在 Angular 客户端中使用此 API。
数据库没问题,我可以使用 POST 添加分数,但现在我尝试使用 API 查询数据库并且 GET 方法不起作用。
我尝试创建一个简单的响应(路由/),但响应是 Postman 中的 Angular 客户端(index.html),POST 工作但 GET 不行!
classRouter.post('/add', (req, res) => {
// Check request body
if (typeof req.body === 'undefined' || req.body === null) {
sendBodyError(res, Vocabulary.errors.noBody)
};
// Check fields in the body
const {
miss,
extra,
ok
} = checkFields(Mandatory.game, req.body);
//=> Error: bad fields provided
if (!ok) {
sendFieldsError(res, Vocabulary.errors.badFields, miss, extra)
}
else {
//=> Request is valid: use controller
createScore(req.body)
.then(apiResponse => sendApiSuccessResponse(res, Vocabulary.request.success, apiResponse))
.catch(apiResponse => sendApiErrorResponse(res, Vocabulary.request.error, apiResponse))
};
});
// Route for all score
classRouter.get('/all', (req, res) => {
getAllScores()
.then(apiResponse => sendApiSuccessResponse(res, Vocabulary.request.success, apiResponse))
.catch(apiResponse => sendApiErrorResponse(res, Vocabulary.request.error, apiResponse))
});
classRouter.get('/', function(req, res) {
res.send('GET request to the homepage');
});
const createScore = body => {
return new Promise((resolve, reject) => {
// Register new user
ScoreModel.create(body)
.then(mongoResponse => resolve(mongoResponse))
.catch(mongoResponse => reject(mongoResponse))
});
};
// Get all scores from the database
const getAllScores = () => {
return new Promise((resolve, reject) => {
ScoreModel.find((error, item) => {
// Request error
if (error) {
return reject(error)
} else {
return resolve(item)
};
});
});
};
如果有人可以帮助我?
谢谢
解决方案
您需要使用调试包进行调试。
首先,您需要登录以确保该函数返回您真正期望apiResponse
的内容。then()
getAllScores
但是,您的问题似乎与这些事情无关。你需要放一个return
before 函数getAllScores
。
classRouter.get( '/all', (req, res) => {
return getAllScores()
.then( apiResponse => sendApiSuccessResponse(res, Vocabulary.request.success, apiResponse) )
.catch( apiResponse => sendApiErrorResponse(res, Vocabulary.request.error, apiResponse))
});
推荐阅读
- excel - 从形状表加载图像表单时出错
- javascript - 如何在AngularJS中的组件之间绑定数据
- javascript - 如何使用正则表达式获取 url 中的路径
- corda - Corda - 使用其他消息代理?
- javascript - 这是一个保留字 - 函数中的错误,而不是返回时
- php - 在关系上选择查询未在 laravel eloquent 中给出结果
- spring - 使用包含下划线的字段的 Spring Data Elasticsearch 查询 Elasticsearch
- java - 如何保存最后一类壁纸
- javascript - 更换 props 后 componentDidMount 不断重复调用
- angular - 如何在 VS Code IntelliSense 中显示 Leaflet Marker-Cluster Freezable 方法