【发布时间】:2016-06-04 14:19:43
【问题描述】:
我通过 Mongoose(MEAN 环境)从 MongoDB 查询作者数据。作者数据还包含作者编写的一系列书籍(-> results.books)。收到后,我想遍历这一系列书籍并检查某些值。这是我目前的代码。
return Author.findOne({_id: req.user._id}, '-username').execAsync()
.then(function(results) {
return Promise.each(results.books) //this line causes TypeError rejection
}).then(function(book){
console.log('book:'+book); // test output
if(book==='whatever‘){
//do foo
}
}).catch(function(err){
console.log('Error: '+err);
});
不幸的是,我无法让它工作,因为它不断给我上面标记的行的拒绝类型错误。我尝试在此处应用此解决方案 (Bluebird Promisfy.each, with for-loops and if-statements?) 但它不会成功,因为它似乎也是一种不同类型的问题。
【问题讨论】:
-
findOne 真的返回一个数组吗?我不知道 - 但猜你得到了一个对象,但
each需要一个数组 -
根据doc,
findOne应该返回一个可能为空的单个文档