Openwhisk无法调用撰写postgre sql

我已经尝试了更多的小时数,而不是承认要让openwhisk函数调用Compose.io上的postgre sql datbase。 这是我的代码:

我最新的化身是这样的:

function myAction(params) { return new Promise(function(resolve, reject) { console.log('Connecting to Compose database'); // console.log('Params ---> ', params); var mysql = require('promise-mysql'); var fs = require('fs'); var pg = require('pg'); var request = require('request') var Promise = require('promise/lib/es6-extensions'); var connString = "postgres:xxxx"; pg.connect(connString, function(err, client, done) { console.log("connectiong..", err, client, done); if (err) { console.log('[connectToCompose] failed to fetch client from pool', err); reject(err); } else { params.client = client; params.done = done; console.log('[connectToCompose] obtained a Compose client'); return(params); } }) // params.client.done(); // console.log("closing connectiong"); }) } exports.main = myAction; 

我有一个类似的例子,我连接到不同的SQL数据库(不写),并使用SQL承诺不Postgre和它的作品。 我究竟做错了什么?

要使用OpenWhisk和任何数据库产品,您需要使用promisified JavaScript代码; 在普通nodejs中使用的事件循环不可用。 我有一个使用pg-promise的例子(或多或less地从项目文档中获取),并且对我来说工作正常。 尝试这样的事情:

 const promise = require('bluebird'); const initOptions = { promiseLib: promise // overriding the default (ES6 Promise); }; const pgp = require('pg-promise')(options); const conn_info = {...connection info...}; const db = pgp(conn_info); module.exports.main = function main(args) { db.any('SELECT * FROM items') .then(data => { console.log('DATA:', data); // return whatever data you wanted resolve({message: 'success'}); }) .catch(error => { console.log('ERROR:', error); }); } 

这里并不是所有的依赖关系都可以在OpenWhisk上使用,所以当你部署动作的时候,把你的*.js文件和整个node_modules/在一个zip文件中,然后上传。 使用OpenWhisk构buildPostgres是完全可能的,如果这有助于鼓励你:)