2016-11-21 64 views
0

所以,我想知道是否有一種方法可以連接到我從Cloud9中安裝Cloud9的mongoDB。我的意思是,我已經連接到數據庫從終端,一切工作就像一個魅力,但我需要在我的腳本在HTML文件中做一些東西,當我嘗試調用包含此代碼的功能它什麼都不做MongoDB Cloud9連接

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連接的終端向我顯示了一個到db的連接。問題是,當我嘗試在腳本中運行該代碼時,它不起作用。對不起,我對mongo是陌生的。

任何幫助,將不勝感激

回答

1

爲了簡化問題,這裏發生了什麼事:

  • node file.js包含在你的問題的代碼工作
  • 相同的代碼粘貼到您的HTML文件是不是

因此,深究問題,讓我們先問:運行之間有什麼區別並將代碼放入html中?

  • 區別在於node ...正在Cloud9工作區上運行(我們稱之爲服務器機器)。 MongoDB的://127.0.0.1:27017/ingesoft引用127.0.0.1這是
  • 你的MongoDB服務器該服務器的機器
  • 您所安裝的mongodb NPM包也出現在服務器機器
  • 的網址上還運行本地主機爲您的服務器

而使用瀏覽器的代碼:

  • 的代碼被客戶的機器上運行
  • 這臺機器沒有您的MongoDB服務器
  • 瀏覽器通常不支持require
  • 你可以做要求,如果你捆綁代碼,並使用類似webpackbrowserify。你有沒有這樣做?
  • 如果確實包裝了所有東西,您需要打包的mongodb包是否已包裝?
  • 可以從客戶端運行mongodb包嗎?
  • 的網址:MongoDB的://127.0.0.1:27017/ingesoft引用127.0.0.1這是你的客戶機器的本地主機

基本上,你可以從上面看到,這兩個是非常不同

如果你想跟你的分貝,很多人去了以下路線:

  • 使實現某種形式的REST API的服務器應用程序
  • 這REST API會談到你的數據庫
  • 您的客戶端代碼知道如何交談的REST API,並獲得所需的數據

這樣,你使用你的服務器只跟你的MongoDB,客戶端可以通過跟你的服務器 互聯網。

這當然是過於簡單化了,但我希望這能解決您的困惑。