Openwhisk 无法调用 compose postgre sql
Openwhisk failing to call compose postgre sql
我已经尝试了比我愿意承认的更多的时间来获得一个 openWhisk 函数来调用 Compose.io 上的 postgre sql 数据库。这是我的代码:
我最新的化身是这样的:
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 数据库(不是 Compose)并使用 sql promise not postgre 并且它有效。我做错了什么?
要使用 OpenWhisk 和任何数据库产品,您需要使用 promisified JavaScript 代码;普通 nodejs 中使用的事件循环不可用。我有一个使用 pg-promise 的示例(或多或少完全取自项目文档)并且对我来说效果很好。尝试这样的事情:
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 文件中,然后上传那。将 Compose Postgres 与 OpenWhisk 一起使用绝对是可能的,如果这有助于鼓励您:)
我已经尝试了比我愿意承认的更多的时间来获得一个 openWhisk 函数来调用 Compose.io 上的 postgre sql 数据库。这是我的代码:
我最新的化身是这样的:
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 数据库(不是 Compose)并使用 sql promise not postgre 并且它有效。我做错了什么?
要使用 OpenWhisk 和任何数据库产品,您需要使用 promisified JavaScript 代码;普通 nodejs 中使用的事件循环不可用。我有一个使用 pg-promise 的示例(或多或少完全取自项目文档)并且对我来说效果很好。尝试这样的事情:
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 文件中,然后上传那。将 Compose Postgres 与 OpenWhisk 一起使用绝对是可能的,如果这有助于鼓励您:)