【问题标题】:Firebase cloud function: reading databaseFirebase云功能:读取数据库
【发布时间】:2017-11-15 17:41:17
【问题描述】:

我目前正在使用 Firebase 云功能与 Api.ai 和 Google 助手 SDK 配合使用。

到目前为止,我所做的是这个简单的响应:

  function setMachine (app) {
    let mach_id = app.getArgument(MACHINE_ARGUMENT);
    app.tell('Machine ID is'+mach_id );

这很好用!助手用正确的参数回答我!

现在我想用我的数据库中的数据进行回复。

我尝试了 2 条不同的路径:

1) 使用数据库REST api:

let url = 'https://myprojectID.firebaseio.com/machine/'+mach_id+'/value.json'
var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", url, false ); // false for synchronous request
    xmlHttp.send( null );
     app.tell('Result: '+xmlHttp.responseText);

结果: 我在以下位置收到错误 500:新 XMLHttpRequest

2) 尝试使用:

const admin = require('firebase-admin');
admin.database().ref('machine/'+mach_id+'/value').once('value', (snapshot) => {
        var event = snapshot.val();   
        app.tell('Result: '+event);
   });

但这也会产生错误 500

【问题讨论】:

  • 状态码 500 表示内部服务器错误。日志中是否显示了更详细的消息?
  • 不,我不知道如何访问更详细的日志

标签: firebase-realtime-database google-cloud-functions


【解决方案1】:

经过一些测试,我发现语法不正确,这里是正确的:

    admin.database().ref('/machine/'+mach_id+'/value').once('value').then(function(snapshot) {
     var event = snapshot.val();   
        app.tell('Result: '+event);
   });

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2020-09-10
    • 1970-01-01
    • 2018-10-30
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多