2017-10-20 83 views
0

我从本教程下面的示例函数:Asynchronous Programming (I Promise!) with Cloud Functions for Firebase - Firecasts火力地堡部署错误:无法配置触发

exports.emailEmployeeReport = functions.database 
.ref('/employees/${eid}/reports/${rid}') 
.onWrite(event => { 
    const eid = event.params.eid; 
    const report = event.data.val().report; 
    const root = event.data.ref.root; 
    const mgr_promise = root.child(`/employees/${eid}/manager`).once('value'); 
    const then_promise = mgr_promise.then(snap => { 
     const mgr_id = snap.val(); 
     const email_promise = root.child(`/employees/${mgr_id}/email`).once('value'); 
     return email_promise; 
    }).catch(reason => { 
     // Handle the error 
     console.log(reason); 
    });; 
    const then_promise2 = then_promise.then(snap => { 
     const email = snap.val(); 
     const emailReportPromise = sendReportEmail(email, report); 
     return emailReportPromise; 
    }).catch(reason => { 
     // Handle the error 
     console.log(reason); 
    }); 
    return then_promise2; 
}); 

var sendReportEmail = function (email, report) { 
    const myFirstPromise = new Promise((resolve, reject) => { 
     // do something asynchronous which eventually calls either: 
     // 
     setTimeout(function() { 
      try { 
       var someValue = "sendReportEmail"; 
       console.log(someValue); 
       // fulfilled 
       resolve(someValue); 
      } 
      catch (ex) { 
       // rejected 
       reject(ex); 
      } 
     }, 2000); 
    }); 
    return myFirstPromise; 
} 

一次我跑firebase deploy命令,最终我收到以下错误:

functions[emailEmployeeReport]: Deploy Error: Failed to configure trigger providers/google.firebase.database/eventTypes/[email protected] (emailEmployeeReport)

我也有一个简单的hello-world方法和一个类似的触发方法,并且他们部署得很好。

我在这里错过了什么吗?

回答

3

数据库引用中通配符的语法没有“$”。

尝试以下操作:

exports.emailEmployeeReport = functions.database .REF( '/员工/ {} EID /报告/ {}摆脱')

+0

所以YouTube是否会呈现错了吗?请参阅https://youtu.be/NgZIb6Uwpjc?t=1m34s –

+0

是的,不幸的是,这是错误的。 – laurenzlong

+0

这解决了这个问题,谢谢! –