我认为创建一个可以在任何地方访问(跨域)的MongoDB REST API的最简单方法是:
我想要从Cordova应用程序访问外部的MongoDB。
我做了很多试错。
我觉得前辈们会更加娴熟地处理。
-
- CordovaにNode.jsのMongoDBライブラリを読み込む方法
Cordovaで使うJavaScriptにNode.jsが使えないのか、ライブラリを読み込めず断念。
MongoDBのコンフィグでrest=true,jsonp=trueでRESTを使ってアクセス
jsonpの形式がとってこれず断念。
EveというMongoDBのサイトにあるRESTのためのもの
外からアクセスできず断念。
SleepyMongooseというMongoDBのサイトにあるRESTのためのもの
pythonのバージョン違い対処するときにCentOS壊しかけたので断念
Node.jsのmongodb-restを使う
成功
首先,由于目前处于验证阶段,所以在不考虑安全的情况下进行构建十分容易。
安装mongodb-rest。
使用npm进行安装。我使用-g选项进行安装。
直接运行。
npm install -g mongodb-rest
mongodb-rest
-g选项是将npm基本安装在默认安装路径的选择。
如果没有这个选项,将会安装在当前目录。
在我的情况下,它安装在下一个路径中。(配置文件路径)
/usr/lib/node_modules/mongodb-rest/config.json
默认情况下,端口3000被使用,因此需要使用iptables打开tcp:3000端口。
从另一台电脑访问
在此访问链接中获取到了以json格式的成功数据:http://アクセス先ホスト:3000/DB名/コレクション名/。
所学之事
事实上,我在MongoDB的配置中坚持使用rest=true, jsonp=true来访问REST,这花费了相当长的时间。
-
- RESTでアクセスする場合、CORSの話でクロスドメインはDatatype:jsonpを使うのがお作法
Datatype:jsonp以外(textとかjsonとかxmlとか)はサーバ側にAccess-Control-Allow-Originの設定が必要
MongoDBにもとからあるRESTの戻りにはJsonP形式で必要なcallbackがついてない
付けられるのかどうか試行錯誤の末、付けられなかった
顺便提一下,环境是CentOS6.9,MongoDB2.6。(MongoDB版本太旧是否是问题?)
另外,mongodb-rest的默认设置是Access-Control-Allow-Origin为*。
数据类型:无法使用jsonp,使用json进行请求。
请留意
当node版本太新时无法运行。
7.10.0失败。
4.8.2成功。