SDK администратора Firebase — неверный ответ DELETE

Я новичок в Javascript (но не новичок в программировании).

Я создаю REST API, используя Firebase ADMIN SDK в NodeJs. Я могу успешно выполнить запрос 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"});
      }); 
});

person user3176541    schedule 07.09.2017    source источник


Ответы (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"});
      });
});
person user3176541    schedule 07.09.2017