12

hapi.js を使用して、最初の node.js REST Web サービスを作成しています。エラーを処理する最良の方法について知りたいのですが、私のdaoレイヤーから言ってみましょう。私throwのdaoレイヤーでtry/catchそれらを処理してから、それらを処理してコントローラーでエラーを送り返すだけですか、それともクールな子供たちがこれを処理するより良い方法はありますか?

ルート/task.js

var taskController = require('../controllers/task');
//var taskValidate = require('../validate/task');

module.exports = function() {
  return [
    {
      method: 'POST',
      path: '/tasks/{id}',
      config : {
        handler: taskController.createTask//,
        //validate : taskValidate.blah
      }
    }
  ]
}();

コントローラー/タスク.js

var taskDao = require('../dao/task');

module.exports = function() {

  return {

    /**
     * Creates a task
     *
     * @param req
     * @param reply
     */
    createTask: function createTask(req, reply) {

      taskDao.createTask(req.payload, function (err, data) {

        // TODO: Properly handle errors in hapi
        if (err) {
          console.log(err);
        }

        reply(data);
      });

    }
}();

dao/task.js

module.exports = function() {

  return {
    createTask: function createTask(payload, callback) {

    ... Something here which creates the err variable...

    if (err) {
      console.log(err); // How to properly handle this bad boy
    }
  }
}();
4

3 に答える 3

6

Boomの使用に関するRicardo Barrosのコメントに沿ってさらに調査を行ったところ、最終的に次のようになりました。

controllers/task.js

var taskDao = require('../dao/task');

module.exports = function() {

  return {

    /**
     * Creates a task
     *
     * @param req
     * @param reply
     */
    createTask: function createTask(req, reply) {

      taskDao.createTask(req.payload, function (err, data) {

        if (err) {
          return reply(Boom.badImplementation(err));
        }

        return reply(data);
      });

    }
}();

dao/task.js

module.exports = function() {

  return {
    createTask: function createTask(payload, callback) {

    //.. Something here which creates the variables err and myData ...

    if (err) {
      return callback(err);
    }

    //... If successful ...
    callback(null, myData);
  }
}();
于 2014-07-15T18:47:15.957 に答える
3

クールな子供たちはパッケージを使用して、 Hapi で未処理のエラーをキャッチしていると思います。Poopを紹介します。

Poop に欠けているのは豊富なドキュメントだけですが、調べてみると、Poop が優れていることがわかります。

私の友人の何人かは、リスボンで開催された node.js イベントに参加しました。主催者の 1 人は、Wallmart で Web テクノロジー スタックを担当していた人物で、Hapi.js や Poop などのクールなものを使用していました。

彼らがうんちを使うなら、それはかなり素晴らしいに違いありません。

PS: 名前はスッパ素晴らしいです

于 2014-07-10T17:50:11.163 に答える