我打算编写一个Firebase数据库触发器。我的用例很简单。每当Facebook messenger webhook调用数据库时,都会使用用户文本消息进行更新,并使用Firebase数据库触发器从AI获取消息并返回信使。
现在我的Firebase数据库触发器无效。即使我的测试用例都通过了。
myapp
|_ messages
|__ 432423423423
|__ 32432432432423
|__ owrijrw8hy2487hf34
|_ recipient: "45354353"
|_ sender: "422342342"
|_ text: "this is text"
现在我想使用firebase数据库触发器将消息发送回用户。
// Realtime Database triggers
exports.facebookMessage = functions.database.ref('/messages/{pageID}/{userID}')
.onCreate(event => {
console.log(event)
return;
})
/test.js
describe('Database /messages/{pageID}/{userID}', () => {
it('Should trigger when the message write it t', () => {
pushParam = {
text: 'Hello',
sender: 'USER_ID',
recipient: 'PAGE_ID',
timestamp: 1458692752478
}
// Firebase database fake event
const fakeEvent = {
// DeltaSnapshot(app: firebase.app.App, adminApp: firebase.app.App, data: any, delta: any, path?: string);
data: new functions.database.DeltaSnapshot(null, null, null, pushParam),
params: {
pageID: 'PAGE_ID',
userID: 'USER_ID'
}
}
// Stub data reference
refParam = '/messages/'
childPageParam = 'PAGE_ID'
childUserParam = 'USER_ID'
// Stubs are objects that fake and/or record function calls.
// These are excellent for verifying that functions have been called and to validate the
// parameters passed to those functions.
const refStub = sinon.stub()
const childPageStub = sinon.stub()
const childUserStub = sinon.stub()
const pushStub = sinon.stub()
Object.defineProperty(fakeEvent.data, 'ref', {get: refStub})
refStub.returns({parent: {child: childPageStub}})
childPageStub.returns({parent: {child: childUserStub}})
childUserStub.returns({push: pushStub})
pushStub.withArgs(pushParam).returns(true)
return assert.eventually.equal(fiobotFunctions.facebookMessage(fakeEvent), undefined);
在控制台中我没有看到任何来自facebookMessage的日志我现在该怎么办?
答案 0 :(得分:0)
这段代码对我来说是正确的,除了缺少的&#39 ;;'在console.log()
// Realtime Database triggers
exports.facebookMessage = functions.database.ref('/messages/{pageID}/{userID}')
.onCreate(event => {
console.log(event)
return;
})
但是,你说明了
在控制台中,我没有看到来自facebookMessage的任何日志,我该怎么办 现在?
你的功能有问题。你应该在日志中有一些东西。我还要在您的facebookMessage函数中添加console.log("Test");
以确定。如果您在日志中看不到任何内容,那么您的功能将无法正确上传,或者您没有在正确的位置收听。
您可以在没有所有Javascript的情况下测试该功能。如果测试日志没有显示,只需在/messages/{pageID}/{userID}
下手动向数据库写一些内容我会检查以确保所有内容都正确上传。
答案 1 :(得分:0)
您的参考资料似乎缺少关键..
myapp
|_ messages // /messages
|__ 432423423423 // {pageID}
|__ 32432432432423 // ??
|__ owrijrw8hy2487hf34 // {userID}
|_ recipient: "45354353"
|_ sender: "422342342"
|_ text: "this is text"
答案 2 :(得分:0)
原来我需要添加另一个参数来获得正确的值。
exports.facebookMessage = functions.database
.ref('/messages/{pageID}/{userID}/{messageKey}')