понял это. Первая проблема не заключалась в возврате первого вызова get_dbinfo, чего я не сделал, потому что он помечал части функции после обещания как «недоступные из-за двух возвратов в одной и той же функции», что подсказывало мне во второй части проблема, которая пыталась включить две разные цепочки обещаний в одну и ту же функцию.
Окончательное решение состояло в том, чтобы привести все в одну цепочку обещаний с повторной настройкой при первом вызове dbFuncs, как показано ниже. В get_dbinfo () не было внесено никаких изменений.
var count = 0;
var perPage = 500;
var page = req.query.p || 1;
return dbFuncs.get_dbinfo()
.then((result) => {
count = result.doc_count
if (count < 500){perPage = count};
return db.find({
selector: {
$and: [
{last_name: { '$gt': 1}},
]
},
use_index: ['patients'],
sort: [{'last_name': 'asc'}],
skip: ((perPage * page) - perPage),
limit: perPage
}).then((docs) => {
let pages = Math.ceil(count / perPage);
res.render("patients", {
pagination: {
currentpage: page,
page: pages
},
obj: docs,
current: page,
});
}).catch((err) => {
console.log('error in patients_controller', err);
});
});
};
Для потомков этот полный блок - отличный способ разбить набор данных (в данном случае из pouchdb) на шаблон hbs.