为什么验证错误后服务器没有重新启动

问题描述 投票:0回答:1

我正在使用node.js和Graphql而不使用Express,以验证我使用Joi的输入,所以在我的突变解析器中我这样做了:

 async user(_, { input }, { dataSources }) {
    if (process.env.NODE_ENV === 'development') {
      debug(input);
    }

    // Validation
    if (input.role === 'user') {
      debug('validate user creation schema');
      validate(userSchemas.userRegisterSchema.post, input);
    } else if (input.role === 'pro') {
      debug('validate pro creation schema');
      validate(userSchemas.userProRegisterSchema);
    } else {
      throw new Error('Bad input error');
    }

所以这是验证函数文件夹中的代码:

import Debug from 'debug';
import BadInputError from '../errors/BadInputError.js';
/*
* validate module.
* @module validate
*/
const debug = Debug(`${process.env.DEBUG_MODULE}:validation`);

// function to validate the input data
async function validate(schema, inputData) {
  try {
    debug('validate input data');
    await schema.validateAsync(inputData);
  } catch (error) {
    debug('validation error');
    throw new BadInputError(error);
  }
}

export default validate;

当输入错误时,我会出现错误,但服务器崩溃,我不希望服务器崩溃...... 请问你有什么想法吗? 谢谢你

我尝试了很多东西,有回报,也有一些 IA 的想法,但没有什么好的。

node.js graphql apollo-server joi
1个回答
0
投票

您不需要从其他条件引发错误。

throw new Error('Bad input error');

当promise被拒绝时,这个错误没有任何处理。 如果需要,您还可以在流程级别使用 unhandledRejection 事件。 https://nodejs.org/api/process.html#event-unhandledrejection

或者只需使用您的记录器进行记录。

'Bad input error'
© www.soinside.com 2019 - 2024. All rights reserved.