【问题标题】:Respond to Dialogflow with Firestore queried Information使用 Firestore 查询信息响应 Dialogflow
【发布时间】:2018-04-13 21:22:21
【问题描述】:

尝试通过将数据查询分离到不同的函数中,然后调用它们为我提供 Dialogflow 的响应文本,从而使我的代码更简洁。基本上,我可以调用 firestore 并拉回列表,但除非我将响应放入 .then() 中,否则我对如何对其进行模块化感到困惑。

例子:

exports.app = functions.https.onRequest((request,response) => {
var listOfClasses = loadClassList().then(
//respond to the user
)};



function loadClassList() {
  var dbRef = db.collection('playerCharacters');
  var getClass = dbRef.get()
  .then(
  //do stuff with the queried data
  ) 
};

但是,我知道我不能对常规函数执行 .then()...所以有没有办法做到这一点而不必将所有查询都放在主导出中?

谢谢!

【问题讨论】:

  • 什么? var loadClassList() {?!?
  • 哎呀,意思是:function loadClassList() {

标签: javascript node.js google-cloud-firestore dialogflow-es


【解决方案1】:

只是

  return getClass;

形成函数。

【讨论】:

    【解决方案2】:

    您的函数 loadClassList() 需要返回一个 Promise(即有数据时将调用的 .then() 方法),而不是实际返回结果。

    因此,如果您想从该引用的文档中获取数据,您可以执行以下操作:

    function loadClassList() {
      var dbRef = db.collection('playerCharacters');
      return dbRef.get()
        .then( querySnapshot => {
          var docData = querySnapshot.docs.map( docSnapshot => docSnapshot.data() );
          return docData;
        });
    };
    

    这将返回一个最终将解析为来自 playerCharacters 集合的数据的 Promise。

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多