当我尝试将太大的数据推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] 删除。
我来说两句