首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Seneca中从操作中抛出错误?

如何在Seneca中从操作中抛出错误?
EN

Stack Overflow用户
提问于 2018-11-02 01:31:52
回答 1查看 110关注 0票数 0

我正在用SenecaJS编写一个简单的任务管理器,并且我试图理解从操作中抛出错误的正确方法。假设我有一个从数据存储加载任务的操作,而该任务不存在.

下面是我插件中的方法:

代码语言:javascript
复制
/**
 * Retrieves a task based on a task ID.
 *
 * @param  {number} args.taskID The UUID of the task to be retrieved.
 * @param  {function} done A callback function which is called upon retrieval. The
 * first argument is an error response; the second is the task.
 * @returns {Task|undefined} A task if one exists; otherwise undefined.
 */
this.get = function(args, reply) {
  var task = this.make('task')
    task.load$( args.taskID, function(err, task) 
      if(!task || err) {
      reply( {code:404, message:`Task ${args.taskID} not found.`} );
    } else {
      reply( task );
    }
  });
};

这是单元测试:

代码语言:javascript
复制
test('Returns "undefined" for non-existant tasks', (fin) => {
  var seneca = testSeneca(fin);
  var id = "I-don't-exist";
  seneca
    .act(
      { domain: 'task', action: 'get', taskID: id },
      function(err, result) {
        expect(result).not.toBeNull();
        expect(result.code).toBe(404);
        fin();
      }
    );
});

下面的代码可以工作,但正如您所看到的,我实际上忽略了err回调,并对结果进行了评估,以查看它是否是一个错误。在文档中,Seneca使用以下方法引发错误:

答复(新错误(404) );

抛出新错误(404);

但是当我这样做的时候,它结束了过程,单元测试失败了。此外,err回调似乎总是为null,即使我用两个对象进行答复。

是否有更正确的方法来返回利用错误回调的错误?

EN

回答 1

Stack Overflow用户

发布于 2019-07-25 23:50:30

您可能正在使用插件定义实例来调用正常操作--在这种情况下,错误总是致命的,因为它们意味着初始化失败。

试一试

代码语言:javascript
复制
this.get = function(args, reply, meta) {
  console.log(meta)

看看fatal === true是否。

还请包括您的seneca.add调用的代码,以便我们可以看看是否是这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53111577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档