gpt4 book ai didi

javascript - 使用Promises更好地处理错误?

转载 作者:行者123 更新时间:2023-12-03 08:47:34 26 4
gpt4 key购买 nike

我目前正在尝试使用Google Firebase函数来访问Google API。它运行正常,但是我在尝试管理可以检测到的错误时有些迷路...

.HTTPS getGoogleUsers函数中,我想返回一个HTTP状态码(200或错误代码)和数据(或错误消息)。

据我所见,我会得到错误:
connect()函数中的

  • (500:内部服务器错误或401未经授权)
  • listUsers()函数中的
  • (500:内部服务器错误或400错误的请求)

  • 我是全部还是部分错误?在这种情况下,我应该采取什么策略?
    感谢您的反馈..
    const functions = require('firebase-functions');
    const admin = require('firebase-admin');
    admin.initializeApp();

    const {google} = require('googleapis');
    const KEY = require('./service-key.json');

    // Create JSON Web Token Client
    function connect () {
    return new Promise((resolve, reject) => {
    const jwtClient = new google.auth.JWT(
    KEY.client_email,
    null,
    KEY.private_key,
    ['https://www.googleapis.com/auth/admin.directory.user'],
    'adminuser@mydomain.com'
    );
    jwtClient.authorize((err) => {
    if(err) {
    reject(err);
    } else {
    resolve(jwtClient);
    }
    });
    });
    }

    function listUsers (client) {
    return new Promise((resolve, reject) => {
    google.admin('directory_v1').users.list({
    auth: client,
    domain: 'mydomain.com',
    }, (err, response) => {
    if (err) {
    reject(err);
    }
    resolve(response.data.users);
    });
    });
    }

    function getAllUsers () {
    connect()
    .then(client => {
    return listUsers(client);
    })
    .catch(error => {
    return error;
    })
    }
    exports.getGoogleUsers = functions.https.onRequest((req, res) => {
    const users = getAllUsers();
    if (error) {
    status = error.status;
    data = error.message;
    } else {
    status = 200;
    data = users;
    }
    res.send({ status: status, datas: data })
    });

    最佳答案

    我想你在找

    function getAllUsers () {
    return connect().then(listUsers);
    //^^^^^^
    }

    exports.getGoogleUsers = functions.https.onRequest((req, res) => {
    getAllUsers().then(users => {
    return {status: 200, datas: users};
    }, error => {
    return {status: error.status, datas: error.message};
    }).then(response => {
    res.send(response);
    });
    });

    这使用 the .then(…, …) method with two callbacks区分成功和错误情况,并等待promise的结果。

    关于javascript - 使用Promises更好地处理错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50373956/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com