繁体   English   中英

使用Mongoose,node和graphql防止控制台错误

[英]Prevent console error with Mongoose, node and graphql

我正在使用Express,Graphql(Apollo服务器)和mongoose制作API服务器。

我正在测试用户创建。 当电子邮件重复时,mongoose会抛出错误(验证错误.Bustal = true)并且graphql处理非常好。 但控制台(终端)也显示错误。 我该如何预防这个问题?

解析器:

const MODEL_PATH = '../../models';
const User = require(MODEL_PATH + '/User');
const { register } = require('../../controllers/auth/RegisterController');

module.exports = {
  RootQuery: {
    users() {
      return User.find({});
    }
  },
  Mutation: {
    registerUser(_, data) {
      return register(data);
    }
  }
};

RegisterController(注册函数)

exports.register = function(data) {
  const { email, password } = data;

  const user = new User({
    email,
    password
  });

  return new Promise((resolve, reject) => {
    user.save().then((user) => {
      resolve(user);
    }).catch((err) => {
      reject(err);
    });
  });

};

和控制台中的错误(我不想这样。我在控制器中处理了错误。我只想在GRAPHQL响应中出错)

MongoError: E11000 duplicate key error collection: y.users index: email_1 dup key: { : "test@example.com" }
    at Function.MongoError.create (/Volumes/Datos/x/code/y/server/node_modules/mongodb-core/lib/error.js:31:11)
    at toError (/Volumes/Datos/x/code/y/server/node_modules/mongodb/lib/utils.js:114:22)
   ....

Graphiql中的响应(没关系)

{
  "data": {
    "registerUser": null
  },
  "errors": [
    {
      "message": "E11000 duplicate key error collection: y.users index: email_1 dup key: { : \"test@example.com\" }",
      "locations": [
        {
          "line": 9,
          "column": 3
        }
      ],
      "path": [
        "registerUser"
      ]
    }
  ]
}

谢谢

根据: http//dev.apollodata.com/tools/graphql-server/setup.html

在服务器中

app.use('/graphql', bodyParser.json(), graphqlExpress({ schema: myschema, debug: false }));

debug false做了伎俩。

现在。 我检查包以获得更好的错误处理

谢谢

看看apollo-errors

https://github.com/thebigredgeek/apollo-errors

apollo-resolvers

https://github.com/thebigredgeek/apollo-resolvers

这些包一起用于处理您描述的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM