为什么Firebase的Cloud功能需要25秒?

时间:2017-04-26 14:47:44

标签: node.js firebase firebase-realtime-database google-cloud-functions

为了清楚起见,我还有其他云功能,这些功能都是间歇性运行的(即在大约2-6秒内从冷却开始,并且都使用相同的样板设置来导入管理实例并将功能导出为一个模块)

我已经看过其他类似的帖子,但这真的让我烦恼。我有这样的云功能:

const admin = require('../AdminConfig');
const { reportError } = require('../ReportError');

module.exports = (event) => {
  const uid = event.params.uid;
  const snapshot = event.data;

  if (snapshot._newData === null ) {
   return null;
   }

  console.log('Create org begin running: ', Date.now());
  const organisation = event.data.val();
  const rootRef = admin.database().ref();
  const ref = rootRef.child('/organisations').push();
  const oid = ref.key;

  const userData = {
    level: 'owner',
    name: organisation.name,
   };

  const orgShiftInfo = {
    name: organisation.name,
    startDay: organisation.startDay || 'Monday',
   };

   const updatedData = {};
   updatedData[`/users/${uid}/currentOrg`] = oid;
   updatedData[`/users/${uid}/organisations/${oid}`] = userData;
   updatedData[`/organisations/${oid}`] = organisation;
   updatedData[`/org_shift_info/${oid}`] = orgShiftInfo;
   rootRef.update(updatedData, (err) => {

     if (err) {
       return rootRef.child(`/users/${uid}/addOrgStatus`).set({ error: true })
      .then(() => {
    console.log(`error adding organisation for ${uid}: `, err);
    return reportError(err, { uid });
    });
    }

   console.log('Create org wrote succesfully: ', Date.now());
    return rootRef.child(`/users/${uid}/addOrgStatus`).set({ success: true });
 });
}

我理解冷启动'事情,但我觉得有点严重错误,它需要25秒。日志不会返回任何错误,并且如此:

enter image description here

有没有更深入的方法我可以调试这个以试图弄清楚它为什么花了这么长时间?它目前无法使用。非常感谢。

1 个答案:

答案 0 :(得分:3)

解决: 抱歉, 我有点误解了API。我应该先看the promise video

我需要把

return rootRef.update...

而不是

rootRef.update...