как заставить сеть использовать Firebase облачной функции (экспресс) + хостинг + Firestore - PullRequest
0 голосов
/ 19 декабря 2018

Я делаю сайт на базе Firebase.

сейчас мой сайт работает.

, но я не знаю, как читать данные о пожарном депо и отвечать на них.

router.get('/', function(req, res, next) {
    admin.firestore().collection('post').get()
    .then(snap => {
        const data = snap.size;
        console.log("size: " + data);
        return res.status(200).send(data);
    }).catch(err => {
        console.log(err);
        res.status(500).send(err);
    });
});
module.exports = router;

журнал работает, но не отвечает.

RangeError: Invalid status code: 24
    at ServerResponse.writeHead (_http_server.js:192:11)
    at ServerResponse.writeHead (/user_code/node_modules/express-session/node_modules/on-headers/index.js:55:19)
    at ServerResponse._implicitHeader (_http_server.js:157:8)
    at ServerResponse.OutgoingMessage.end (_http_outgoing.js:573:10)
    at ServerResponse.end (/user_code/node_modules/express-session/index.js:354:19)
    at ServerResponse.send (/user_code/node_modules/express/lib/response.js:221:10)
    at admin.firestore.collection.get.then.snap (/user_code/routes/main.js:14:26)
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)

1 Ответ

0 голосов
/ 19 декабря 2018

const data = snap.size дает вам переменную числового типа, которая является размером коллекции, которую вы только что запросили.Когда вы передаете число в send (), похоже, что Express сообщает, что вы хотите отправить этот номер в виде кода состояния HTTP клиенту (и, очевидно, он переопределяет то, что вы установили с помощью status ()).Документы API для send () даже не говорят, что вы можете передать число.

Если вы хотите отправить число в качестве тела ответа, попробуйте преобразовать его вВместо строки:

res.status(200).send('' + data);

Или связать его в объект JSON для анализа клиентом, что, вероятно, лучше.

...