Firebase管理员SDK - DELETE响应不正确

时间:2017-09-07 06:44:40

标签: javascript node.js firebase firebase-realtime-database firebase-admin

我是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"});
      }); 
});

1 个答案:

答案 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"});
      });
});