Openwhisk 和 Minio 打包操作问题

Openwhisk and Minio with packaged action issue

我正在尝试创建一个使用 minio 服务器的 openwhisk 操作。为了做到这一点,我必须将我的操作打包为 nodeJs 模块,因为 openwhisk 不支持 minio。我的 index.js 文件如下:

function myAction(){
    const minio = require("minio")
    const minioClient = new minio.Client({
        endPoint: 'myIP',
        port: 9000,
        secure: false,
        accessKey: '###########',
        secretKey: '###########'
    });

    minioClient.listBuckets(function(err, buckets) {
        if (err) return console.log(err)
        return {payload: buckets}
    })

}

exports.main = myAction;

当我调用此操作时,我得到了 {}。你知道为什么会这样吗?有什么解决办法的建议吗?

OpenWhisk 操作需要您 return a Promise, if you're doing something asynchronously

在你的情况下,你需要构建一个承诺,一旦 listBuckets 方法完成(通常这意味着:你需要在回调中解决它)。

function myAction(){
    const minio = require("minio")
    const minioClient = new minio.Client({
        endPoint: 'myIP',
        port: 9000,
        secure: false,
        accessKey: '###########',
        secretKey: '###########'
    });

    return new Promise(function(resolve, reject) {
        minioClient.listBuckets(function(err, buckets) {
            if (err) {
                reject(err);
            } else {
                resolve({payload: buckets});
            }
        });
    });
}

exports.main = myAction;

(未经测试的代码)。