我是Javascript的新手(但不是编程新手)。
我正在使用NodeJs中的Firebase ADMIN SDK创建REST API。如果资源存在,我能够成功执行DELETE请求。但如果它不存在(或ID不正确),POSTMAN中的响应仍然成功。
我认为回调函数不正确。当我实现GET /:id和PUT /:id时,我可能会看到同样的问题。请帮忙。
// DELETE /api/billingPlans/:id
// Delete a billing plan
routes.delete('/:id', (req, res) => {
var ref = admin.database().ref(firebaseNode);
//Have also tried snapshot.exists() but similar problem occurs
return ref.child(req.params.id).once('value', function(snapshot) {
snapshot.ref.remove(function(error){
if(!error)
res.status(200).json({"result" : "DELETE Success"});
else res.status(204).json({"error" : "Not found"});
});
});
答案 0 :(得分:-1)
我在思考了一段时间之后做到了。状态代码204不会在POSTMAN中发回正确格式化的正文。不知道为什么。简化了代码,现在代码如下所示:
// DELETE /api/billingPlans/:id
// Delete a billing plan
routes.delete('/:id', (req, res) => {
var ref = Common.admin.database().ref(firebaseRootNode);
ref.child(req.params.id).once('value', function(snapshot) {
if(snapshot.exists()){
snapshot.ref.remove();
return res.status(200).json({"result" : "DELETE Success"});
}
//204 does not send back a body
return res.status(200).json({"error" : "Not found"});
});
});