【问题标题】:MongoDB Cloud9 ConnectionMongoDB Cloud9 连接
【发布时间】:2016-11-21 01:39:32
【问题描述】:
所以,我想知道是否有办法从 html 连接到我在 Cloud9 中设置的 mongoDB。我的意思是,我已经从终端连接到数据库,一切都像魅力一样工作,但我需要在我的脚本中的 html 文档中做一些事情,当我尝试调用包含此代码的函数时,它什么也不做
var MongoClient = require('mongodb').MongoClient
, format = require('util').format;
MongoClient.connect('mongodb://127.0.0.1:27017/ingesoft', function (err, db) {
if (err) {
throw err;
} else {
console.log("successfully connected to the database");
}
db.close();
});
我已将相同的代码保存到“file.js”中,并使用节点 file.js 从控制台运行它,它输出到控制台日志“成功连接到数据库”,以及运行 mongo 连接的终端显示我与数据库的另一个连接。问题是,当我尝试在脚本中运行该代码时,它不起作用。对不起,我是 mongo 的新手。
任何帮助将不胜感激
【问题讨论】:
标签:
javascript
node.js
mongodb
cloud9-ide
【解决方案1】:
为了简化您的问题,以下是正在发生的事情:
-
node file.js 包含您问题中的代码正在运行
- 将相同的代码粘贴到您的 html 文件中是不行的
那么,追根究底,我们先问:运行node file.js和把代码放到html里有什么区别?
- 不同之处在于
node ... 在您的Cloud9 工作区上运行(我们称它为服务器机器)。
- 您的 MongoDB 服务器也在该服务器计算机上运行
- 您安装的
mongodb npm 包也存在于服务器计算机上
- 网址:mongodb://127.0.0.1:27017/ingesoft 引用
127.0.0.1 这是您服务器的本地主机
而浏览器上的代码:
- 代码正在您客户的机器上运行
- 那台机器没有你的 Mongodb 服务器
- 浏览器通常不支持
require
- 如果您捆绑代码并使用
webpack 或 browserify 之类的东西,则可以执行要求。也许你这样做了?
- 如果您确实打包了所有内容,您需要打包的
mongodb 包是否已打包?
-
mongodb 包可以从客户端运行吗?
- 网址:mongodb://127.0.0.1:27017/ingesoft 引用
127.0.0.1 这是您客户机器的本地主机
基本上,从上面可以看出,两者非常不同。
如果你想和你的数据库交谈,很多人会走以下路线:
- 制作一个实现某种形式的 REST API 的服务器应用程序
- REST API 与您的数据库对话
- 您的客户端代码知道如何与 REST API 通信并获取所需数据
这样,您只使用您的服务器与您的 MongoDB 通信,而客户端可以通过互联网与您的服务器通信。
当然,这过于简单化了,但我希望这能解决您的困惑。