无法从 NodeJS 连接到 MongoDB,在 OpenWhisk 中部署为操作



我有以下代码编写了一个名为app.js的文件。MongoDB安装在192.168.16.1上,这是我的笔记本电脑。当我使用 node app.js 命令运行它时,我收到一条消息"已连接"。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var mongoose = require('mongoose');
var MongoClient = require('mongodb').MongoClient;
// Connect to the db
MongoClient.connect("mongodb://192.168.16.1:27017/angularcrud", function (err, db) {
if(err) {console.log(err); }
else {console.log('connected');}
});

\

我在笔记本电脑上使用Vagrant设置了一个OpenWhisk环境。如果是 ssh 到流浪者并 ping 到 192.168.16.1,我得到 ping 响应,所以我确定流浪者虚拟机能够到达 192.168.16.1。 我在 NodeJS 中编写了以下代码来创建 OpenWhisk 操作。我已将其作为.zip文件部署到openwhisk中(其中还包括Node_modules文件夹(。

function entryPoint(args) {

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var message = "Connection not SET";
var mongoose = require('mongoose');
var MongoClient = require('mongodb').MongoClient;
// Connect to the db
MongoClient.connect("mongodb://193.168.16.1:27017/angularcrud", function (err, db) {
if(err) {return err;}
else {return 'success';}

});
}
module.exports.main = entryPoint;

如果我在 OpenWhisk 中运行上面的代码,我会得到一个结果 {}。如果我删除MongoClient.Connect语句并返回一个简单的字符串,那么当我调用该操作时,我将获得该字符串。我确信MongoClient.Connect在OpenWhisk上运行时有问题。但是,我真的被困住了,因为我没有错误地告诉我出了什么问题。

entryPoint函数执行异步函数以连接到数据库。执行异步函数调用时,需要从操作处理程序返回 Promise。这可确保平台在完成调用之前阻止该异步结果。

function main() {
return new Promise((resolve, reject) => {
MongoClient.connect(URL,  (err, db) => {
if(err) return reject(err)
resolve({message: "success"})
})        
})
}

最新更新