асинхронное использование node.js HapiJS и couchbase sdk, возвращающее пустые результаты - PullRequest
0 голосов
/ 31 октября 2018

Итак, у меня есть следующий код, который находится в обработчике Hapi.JS и пытается вызвать couchbase sdk.

handler: async (request, h) => {
                var SpatialQuery = Couchbase.SpatialQuery;
                var sw = JSON.parse(request.payload.sw);
                var ne = JSON.parse(request.payload.ne);

                var query = SpatialQuery.from('dev_spatialtest', 'spacetest').limit(100);
                return await myBucketQuery(query);
            }

Вызывает эту функцию

async function myBucketQuery(query){
    return bucket.query(query, async function(err, results){
                console.log("in results = " + JSON.stringify(results));
                return results;
            });
};

console.log в myBucketQuery возвращает правильный результат, но делает это после того, как хапи уже вернулось (или, возможно, нет ???). Результат при возвращении почтальона как

{
    "_events": {},
    "_eventsCount": 2
}

Может кто-нибудь подсказать мне, что я здесь делаю не так?

Исправлено с использованием следующего

async function myBucketQuery(query){
    return new Promise(resolve => { 
        var resolution = bucket.query(query, async function(err,results){
            console.log("in results = " + JSON.stringify(results));
            resolve(results);
        });
        return resolution;
    });
};
...