0
我用的NodeJS作爲託管在火力功能來查詢我的火力數據庫後端的,我有這樣的代碼:火力地堡數據庫查詢抽出太多的時間在雲功能
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors')({origin: true});
admin.initializeApp(functions.config().firebase);
const express = require('express')
exports.getAjax = functions.https.onRequest((request, response) => {
cors(request, response,() => {
console.log("request.body :", JSON.stringify(request.body));
console.log("request.query :", JSON.stringify(request.query));
var date = {
startDate: request.body.startDate,
endDate: request.body.endDate
}
var db = admin.database();
var logsDbPath = 'logs';
var usersDbPath = 'users';
var ref = db.ref(logsDbPath);
var tags;
db.ref(usersDbPath).once('value').then(function(tagsSnapshot) {
tagsSnapshot.forEach(function(tagSnapshot) {
var tagId = tagSnapshot.key;
tagSnapshot.forEach(function(sessSnapshot) {
var userSessId = sessSnapshot.key;
var userInfo = sessSnapshot.val();
});
});
tags = JSON.parse(JSON.stringify(tagsSnapshot.val()));
console.log(tags);
});
});
});
我的主要問題是,console.log(tags);
,實際上完成查詢並獲取標籤值了〜38秒,在此情況下(有時需要約1分鐘),我就會把圖片波紋管:
而該對象這並不是說大可言,像100行,4頁我不認爲它應該花費那麼多,可能我做錯了什麼,但是在哪裏?我還必須編寫一個承諾或回調,以便在前端發送該標籤var響應,導致函數完成之前,我得到任何價值的標籤(見圖片),我來自一個PHP背景和這個異步JavaScript的概念,這對我來說是非常新的。
非常感謝你的回覆,這真是太好了,我真的很喜歡firebase,所有的尊重你的團隊!回到代碼,我有response.status(200).send(JSON.stringify(tags));最後,但我的錯誤是我把它放在函數範圍之外,函數完成了,我沒有任何對象,但移動響應發送函數內部使它工作,小修改,出於某種原因,我得到Cors錯誤,如果我res.status(200)。發送(標籤);但我改變了response.status(200).send(tags);和工作,關於查詢速度現在看起來不錯,我會更多地測試,謝謝! –
錯字很好。我更新了我的答案以解決問題。 –