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;
(未经测试的代码)。
我正在尝试创建一个使用 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;
(未经测试的代码)。