Пытаюсь сделать сначала один запрос к mongo, потом другой на основе результата предыдущего запроса, и выдать результат.
Не работает, в чем ошибка?
export function getArticle(id) {
var field = {}
if(mongoose.Types.ObjectId.isValid(id)){
field['_id'] = id
} else field['slug'] = id
return new Promise(function(resolve, reject){
Article.findOne(field)
.then(function(article) {
User.findOne({_id: article.author})
.then(function(author) {
article.author = author.username
return Promise.resolve(article)
})
.catch(function(err){
return Promise.reject(err)
})
})
.catch(function(err){
return Promise.reject(err)
})
})
}
Решил так:
/* Находим одну статью */
export function getArticle(id) {
return (function(){
return new Promise(function(resolve, reject){
var field = {}
if(mongoose.Types.ObjectId.isValid(id)){
// если в slug есть признаки objectId ищем так же в slug
field = { $or: [ {_id: id}, {slug: id} ]}
resolve(field)
} else {
field['slug'] = id
resolve(field)
}
})
})()
.then(function(field){
return Article.findOne(field).exec()
.then(function(article) {
// если есть статьи not null
if(article){
var result = []
return User.findOne({_id: article.author}).exec()
.then(function(author){
author = author || {username: "deleted"}
return [article, author]
})
} else return Promise.reject("article not find")
})
.then(function(result) {
result[0].author = result[1].username
return result[0]
})
})
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я школьник, говорю прямым текстом, начал учить htmlНаписал простой сайт с использованием одного маленького скрипта, хосчу его на своем компьютере
Задача у меня была следующая: есть несколько слайдов с вертикальным перелистыванием при помощи нативного скроллинга браузераТекущий активный...
Конкретно с indexOf() это сомнительная идеяПоскольку !!arr