【问题标题】:scheduled cloud function error: Function returned undefined, expected promise or value计划的云函数错误:函数返回未定义、预期的承诺或值
【发布时间】:2019-05-08 12:52:21
【问题描述】:

我正在尝试创建一个计划的云函数,该函数使用来自 api 调用的值更新文档字段。但是我在日志中得到了上面提到的错误,尽管我正在返回一个承诺(据我所知)

感谢任何帮助

api 调用返回这个 json:

{ "alarm": "false" }

我的代码:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import * as rp from 'request-promise';

admin.initializeApp()

export const scheduledAlarmUpdate = functions.pubsub.schedule('every 30 minutes').onRun((context) => {

    const docRef = admin.firestore().collection('alarms').doc('stuttgart');
    const username = 'bitfactory';
    const pass = '...';

    const options = {
        url: 'https://api.bitfactory.io/fineparticlesalarm/',
        auth: {
            user: username,
            password: pass
        },
        method: 'GET',
        json: true
    }

    return rp(options).then(data => {
        console.log(data.alarm)

        docRef.set({
            alarm: data.alarm
        })
        .catch(err => {
            console.log(err);
        });
    })
});

【问题讨论】:

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


    【解决方案1】:

    需要返回set()方法返回的promise,如下:

    export const scheduledAlarmUpdate = functions.pubsub
      .schedule('every 30 minutes')
      .onRun(context => {
        const docRef = admin
          .firestore()
          .collection('alarms')
          .doc('stuttgart');
        const username = 'bitfactory';
        const pass = '...';
    
        const options = {
          url: 'https://api.bitfactory.io/fineparticlesalarm/',
          auth: {
            user: username,
            password: pass
          },
          method: 'GET',
          json: true
        };
    
        return rp(options)
          .then(data => {
            console.log(data.alarm);
    
            return docRef.set({  // ->>> here return
              alarm: data.alarm
            });
          })
          .catch(err => {
            console.log(err);
          });
      });
    

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 2019-11-03
      • 2020-12-23
      • 2019-06-09
      • 2018-12-03
      • 2019-08-12
      • 1970-01-01
      • 2019-05-11
      • 2018-09-03
      相关资源
      最近更新 更多