我认为创建一个可以在任何地方访问(跨域)的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成功。

广告
将在 10 秒后关闭
bannerAds