Sử dụng mongoose để truy vấn kết quả từ db và Q cho các lời hứa, nhưng việc tìm kiếm khó khăn để bao quanh đầu tôi chỉ nhận được danh sách người dùng có sẵn. Hiện nay tôi có một số cái gì đó như thế này:Mongoose và hứa hẹn: làm thế nào để có được một loạt các kết quả truy vấn?
var checkForPerson = function(person) {
people = mongoose.model('Person', Person)
return people.findOne({"_id": person }, function(err, doc) {
if (err) console.log(err)
if (doc !== null) {
return doc
} else {
console.log('no results')
}
})
}
var promises = someArrayOfIds.map(checkForPerson);
// this is where I would like to have an array of models
var users = Q.all(promises)
//this fires off before the people.findOne query above to users is undefined
SomeOtherFunction(users)
Làm thế nào tôi sẽ đi về việc có các truy vấn kết thúc trước khi SomeOtherFunction
mà không làm tấn callbacks cẩu thả?
Không bao giờ biết về điều đó '$ in', tôi chắc chắn sẽ thử điều này! –
@ delboud op nếu đây là câu trả lời mà cuối cùng giải quyết vấn đề của bạn, bạn nên xem xét chấp nhận nó hơn tôi mà bạn vừa chấp nhận. Trong tất cả sự trung thực trong khi câu trả lời của tôi mang lại nhiều nền lý thuyết và thông tin hữu ích hơn về lời hứa IMO - đây là câu trả lời thực tế cho những người phải đối mặt với vấn đề này ở Mongoose. Bạn có thể upvote câu trả lời của tôi nếu bạn tìm thấy nó hữu ích nhưng tôi tất cả cho các giải pháp thực tế :) –
Tôi đã thực sự đấu tranh với những lời hứa để bạn trả lời câu hỏi của tôi, nhưng, ông đã cho tôi cái nhìn sâu sắc về một tính năng. Dù bằng cách nào với tôi :) –