【发布时间】:2017-09-27 09:03:04
【问题描述】:
我使用 nodejs 作为托管在 firebase 函数上的后端来查询我的 firebase 数据库,我有以下代码:
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 概念对我来说很新。
【问题讨论】:
标签: node.js firebase firebase-realtime-database google-cloud-functions