我正在创建一个可以接收多个文档的API。 我的代码使用promises调用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
参数不是字符串。
问题在于,当其中一个文档未通过验证时,只有第一个失败被发送到承诺中的失败函数。
此外,我无权访问已成功保存的任何记录。我在github上搜索了文档和测试,但在这个问题上找不到任何东西。
创建多个文档时是否有更好的方法来处理这种情况?
答案 0 :(得分:0)
显然,当将数组传递给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);
});
});
由于我不允许一次创建大量记录,因此该解决方案有效。在执行结束时,我有一个包含所有记录的数组,以及失败的错误消息。