猫鼬:如何捕获由异步回调引起的MongoError

亚当

当我尝试将太大的数据推mongoDb入时,出现以下错误:MongoError: document is larger than the maximum size 16777216

我知道,这很正常,但是我无法捕获此错误,并且我的node.js进程退出了。

您能告诉我如何捕获此错误吗?

example.js:无法捕获错误,node进程退出

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

mongoose.connection.on('error', function (err) {
    console.log(err);
});

var Cat = mongoose.model('Cat', {name: Object});


setTimeout(function () {
    var kitty = new Cat({
        name: {
            value: 'Zildjian',
            data: (new Array(16 * 1024 * 1024)).join("x")
        }
    });

    kitty.save(function (err) {
        if (err) // ...
            console.log('meow');
    });

}, 1000);

我尝试将代码包装到中,try...catch但是也没有捕获到错误。

标准-

因为setTimeout是异步的,所以在调用堆栈外部放置回调会导致错误上升到堆栈顶部。因此,请勿使用setTimeout,也可以添加其他错误处理程序:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

mongoose.connection.on('error', function (err) {
    console.log(err);
});

process.on('uncaughtException', function (err) {
  if (err.name==='MongoError') {
    mongoose.connection.emit('error', err);
  } else {
    console.log(err);
    process.exit(0);
  }
});

var Cat = mongoose.model('Cat', {name: Object});


setTimeout(function () {
    var kitty = new Cat({
        name: {
            value: 'Zildjian',
            data: (new Array(16 * 1024 * 1024)).join("x")
        }
    });

    kitty.save(function (err) {
        if (err) // ...
            console.log('meow');
    });

}, 1000);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

导出在异步回调中可用的猫鼬连接?

来自分类Dev

从猫鼬承诺的回调函数引发的错误未捕获

来自分类Dev

如何从猫鼬查询回调中访问特定值?

来自分类Dev

node.js-捕获猫鼬回调中引发的错误

来自分类Dev

node.js-捕获猫鼬回调中引发的错误

来自分类Dev

猫鼬查询中的回调数据

来自分类Dev

Node.js猫鼬回调

来自分类Dev

猫鼬回调无法使用永远

来自分类Dev

猫鼬人口-回调与执行

来自分类Dev

猫鼬查询在回调后挂起

来自分类Dev

流星:如何捕获异步回调函数错误

来自分类Dev

猫鼬如何在exec回调函数中传递额外的参数

来自分类Dev

猫鼬填充回调未定义

来自分类Dev

猫鼬-向回调中返回的对象添加方法

来自分类Dev

猫鼬find()与回调有关的问题

来自分类Dev

猫鼬“模式方法”回调不起作用

来自分类Dev

猫鼬从withTransaction回调返回值

来自分类Dev

猫鼬的findById()回调仅返回废话数据

来自分类Dev

在NodeJS cronjob中未调用猫鼬查询回调

来自分类Dev

猫鼬模式发布'保存'回调顺序

来自分类Dev

猫鼬“模式方法”回调不起作用

来自分类Dev

For循环不从猫鼬回调更新数组

来自分类Dev

异步猫鼬呼叫

来自分类Dev

异步猫鼬处理

来自分类Dev

猫鼬-由:: 11000 E11000重复键错误索引引起?

来自分类Dev

猫鼬:拓扑结构被破坏MongoError

来自分类Dev

如何捕获猫鼬中的错误代码

来自分类Dev

如果异常是由特定功能引起的,如何捕获

来自分类Dev

如何通过异步回调实现未来