javascript - Google Cloud Function 未处理的拒绝

标签 javascript node.js react-native promise google-cloud-platform

我正在使用谷歌云功能来处理数据。在我的一个功能中,我正在做嵌套的 .then's。

问题是,一切正常,但我在函数日志中收到“未处理的拒绝”错误。

我不知道我在做什么错误。这是我的云功能代码:

const admin = require('firebase-admin');
const rp = require('request-promise');

module.exports = function(req, res) {

const phone = String(req.body.phone).replace(/[^\d]/g, '');
const amount = parseInt(req.body.amount);
const couponCodeName = (req.body.couponCodeName);
const couponUsage = parseInt(req.body.couponUsage);
const usersCouponUsage = parseInt(req.body.usersCouponUsage);
const finalAddress = (req.body.finalAddress);
const planName = (req.body.planName);
const saveThisAddress = (req.body.saveThisAddress);
const orderNumber = (req.body.orderNumber);

const options = {
    method: 'POST',
    uri:`https://....`,
    body: {
        amount
    },
    json: true
};

return admin.auth().getUser(phone)
        .then(userRecord => {
            return rp(options)
        })
        .then((orderResponse) => {
            return admin.database().ref('trans/'+ phone)
                .push({ amount: orderResponse.amount })
            })
        .then(() => {
            return admin.database().ref('ordersOfUsers/'+ phone)
                .push({ amount })
        })
        .then(() => { 
            return saveThisAddress === true ? 
                admin.database().ref('SavedAddress/'+phone)
                    .push({address: finalAddress}) : null
        })
        .then(() => {
            return admin.database().ref('delivery/'+phone+'/'+orderNumber)
                .set({ plan: planName === "" ? "Single Day Plan" : planName, delivered: false}, () => {
                    res.status(200).send({ success:true })
                })
        })
        .then(() => {
            return couponCodeName === "" ? null : 
                admin.database().ref(`couponCodes/${couponCodeName}`)
                    .update({couponUsage: couponUsage + 1 })
        })
        .then(() => {
            return usersCouponUsage === "" ? null : 
                admin.database().ref(`couponUsage/${phone}`)
                    .update({ [couponCodeName]: usersCouponUsage + 1 })
        })
        .catch((err) => {
            res.status(422).send({ error: err })
        })    
    .catch((err) => {
       res.status(422).send({error: err });
    });
}

最佳答案

您的代码在 promise 中已经有 return 语句(除了在 catch block 中)。因此,从 return admin.auth().getUser(phone) 中删除返回值可能会解决您的错误。

关于javascript - Google Cloud Function 未处理的拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55204375/

相关文章:

javascript - 在 Javascript 中缓存和预取过期的 promise

reactjs - 如何将 React Native WebView 刷新到初始 url?

javascript - 表达正则表达式字符串表示法

javascript - Node.js 请求在收到响应之前丢弃

ios 手动安装 firebase,出现错误 "firebase.h"找不到文件

javascript - React Native - Undefined 不是对象(评估 this.props.isLoggedIn.then)

javascript - 在 selectize.js 中隐藏箭头图标

javascript - NPM 包 excel-as-json 提前触发回调

javascript - 在缩略图中悬停时图像发生变化的 fotorama

node.js 在 POST 请求上刷新 DOM