使用mongoose保存多个文档时的错误处理
Handling errors when saving multiple documents with mongoose
我正在创建一个可以接收多个文档的API。我的代码使用promise调用Document#create,如下所示:
var body = [{url: "http://url1"}, {url: []}]; // example of a request payload
Image.create(body).then(function(images){
// do something...
}).onReject(function(err) {
// err is the object returned by the first problematic document
});
上面代码中的模型将拒绝第二个文档,因为url
参数不是String。
问题是,当其中一个文档验证失败时,只有第一个失败被发送到promise中的失败函数。
此外,我无法访问任何成功保存的记录。我在github上搜索了文档和测试,但找不到任何关于此事的信息。
在创建多个文档时,是否有更好的方法来处理这种情况?
显然,当前无法获得在将数组传递给Document#create方法时成功的记录。即使是回调函数也不会将它们作为参数传递。
我设法做我想做的事情的方法是通过new
创建资源对象,然后保存对象:
var body = [{url: "http://url1"}, {url: []}]; // example of a request payload
var images = [];
body.forEach(function(img) {
var image = new Image(img);
image.save(function(err) {
images.push(err || image);
});
});
由于我不允许同时创建大量的记录,所以这个解决方案起到了作用。在执行结束时,我得到了一个数组,其中包含所有记录以及失败记录返回的错误消息。
相关文章:
- javascript:如何在antlr生成的Lexer中进行错误处理
- 生成pdf或其他非html文件时的错误处理
- sailsjs在创建两个模型时的错误处理
- 为什么没有调用我的流错误处理程序
- 错误处理try&catch+回调
- EventSource中的错误处理
- Angular JS中的通用Ajax错误处理-拦截器
- Sinon Mocha节点错误处理
- 如果文件不存在,fs.watch是否有错误处理程序
- Javascript初始化和错误处理
- AngularJS错误处理:根据错误数组显示错误
- JQuery 图像错误处理
- BreezeJS中央错误处理程序和自动重试
- 文件下载html与错误处理FileNotFound
- 使用mongoose保存多个文档时的错误处理
- Node.js如何知道回调的第一个参数是否是错误处理程序
- Meteor JavaScript-错误处理
- AJAX自定义错误处理代码问题
- 正在获取丢失的错误处理程序套接字消息,无法读取属性'timerID'使用Node.js和Socket.i
- 为什么不't JavaScript库使用错误处理