2011-09-03 120 views
12

我想直接從客戶端使用mongodb,在我的模型中使用javascript。我想這是可能的,因爲在mongo網站上有一個用於演示的JavaScript實時控制檯。Mongodb客戶端javascript api

確實存在一種方法,使用相同的API在一個正常的JavaScript應用,而無需編寫客戶端 - 服務器膠水代碼?

感謝

回答

7

貌似網站使用REST-如AJAX接口,但我可以肯定,它不直接或間接地連訪問任何MongoDB實例通過一些橋樑。

在應用此模式之前應考慮兩次:如何執行安全性?你知道AJAX的限制嗎?如果你真的知道你在做什麼,官方documentation點到一些有用的資源:

  • Sleepy Mongoose(蟒蛇)是MongoDB的一個全功能的REST接口是可以作爲一個單獨的項目。

  • MongoDB Rest(Node.js)是alpha到MongoDB的REST接口,它使用MongoDB節點Native驅動程序。

  • Simple REST Interface的mongod的過程包括爲方便起見簡單隻讀REST接口。對於完整的REST功能,我們推薦使用外部工具,如Sleepy.Mongoose

在休息橋樑和管理same origin policy你可以直接使用AJAX調用和JavaScript輕鬆訪問MongoDB的。

+1

任何有關安全性的建議? – Bakaburg

+1

我想我會在服務器端檢查證書並授權客戶端在客戶端和MongoDB REST橋之間放置一些中間件。通過這種方式,客戶端代碼(瀏覽器)不知道任何關於MongoDB憑據的信息,但是因爲它發送會話cookie(假設用戶已登錄),您可以識別客戶端並授予其訪問權限。 –

+0

感謝您的回答!我贊同你。但是如果沒有通過服務器中間層傳遞每個數據庫請求的負擔,您認爲構建應用程序是不可能的?但couchdb和couchapp可以使用REST通信(通過確實乾淨的jquery界面)。他們如何應對安全問題?我不想學習couchdb,因爲我發現它對於我所需要的(以及我所擁有的時間)來說過於複雜。 – Bakaburg

1

我需要做一些類似的自己,一個管理界面內的控制檯,因爲我在後端使用PHP我只是做了腳本接收JS的命令,並使用MongoDB的:: execute方法,在連接PHP已經打開,所以我不必傳遞任何驗證數據,只是命令。
你必須有這樣的事情非常小心,並確保只有受信任的用戶可以訪問該頁面(和腳本),不予以公佈,因爲任何人都可以在客戶端執行JS來獲得訪問您的D b。

編輯:這裏的鏈接到文檔http://ar2.php.net/manual/en/mongodb.execute.php

1

看看meteorjs,或類似的。模型編寫一次,完整的ACL。

當你在Redis中添加時會更好:)