выполнение двух вызовов дБ в функции restdb.io javascript onGET - PullRequest
0 голосов
/ 09 марта 2020

В restdb.io я создаю собственный маршрут сервера https://restdb.io/docs/custom-rest-routes#restdb, чтобы выбрать случайный документ из коллекции (вместо того, чтобы возвращать всю коллекцию в Биксби, затем выбрать случайный), и у меня некоторые трудности с получением функции onGET для выполнения двух вызовов базы данных подряд.

// #!/javascript

const onGET = (req, res) => {
    db.get("/rest/content?totals=true&count=true", {"contenttype": "facts"}, {}, (dberr, dbdata) => {
        //log.debug("Input", req);

        const c = dbdata.totals.count
        log.debug("count is", c)

        // pick random number 1 ... c

        // skip to doc #c and get just one


        // for now just get doc #5

        const test  = "5"
        log.debug("test is", test)
        // command to get doc #5 not working 

        const foo = db.get("/rest/content?skip=5)", {"contenttype": "facts"}, {$max: 1})
        log.debug("foo is", foo)

        res.end({"text": foo});    
    })

}

инспектор REST показывает следующий вывод:

08 Mar 20:31:10 200 GET /rest/content?totals=true&count=true&q={"contenttype":"facts"}&h={} ...
08 Mar 20:31:10 200 DEBUG random2.onGET count is 230
08 Mar 20:31:10 200 DEBUG random2.onGET test is 5
08 Mar 20:31:10 200 DEBUG random2.onGET foo is {}

Таким образом, проблема в том, что он не выполняет второй запрос БД и, следовательно, ответ пуст.

1 Ответ

0 голосов
/ 10 марта 2020

Вам нужно сделать эту часть кода

 log.debug("foo is", foo)

 res.end({"text": foo});   

частью обратного вызова .

Посмотрите, как вы пишете db.get(..., (dberr, dbdata) => { ... }

содержимое в {...} является вашей функцией обратного вызова.

Таким образом, для вашего второго вызова (сделанного с const foo) вы должны сделать тот же шаблон.

Подробнее о обратных вызовах см. https://developer.mozilla.org/en-US/docs/Glossary/Callback_function

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...