修改 MongoDB 以允许跨源请求

Modifying MongoDB to allow cross origin requests

我对 MongoDB 比较陌生,所以我还在适应它。

目前我正在尝试使用 javascript.

中的以下代码从客户端 post json 对象到 mongo
var addUserButton = document.getElementById('add-user');
var userNameInput = document.getElementById('name');

addUserButton.onclick = function() {
    var newUser = new Object();
    newUser.name = userNameInput.value;
    var newUserJson = { 'name': newUser.name};
    $.post('127.0.0.1:27017/test', newUserJson);
};

每当我 运行 此代码时,尽管我收到错误说明:

XMLHttpRequest cannot load %3127.0.0.1:27017/test. Cross origin requests are only supported for protocol schemes... etc

我读了这篇文章,想知道将以下 CORS 处理程序添加到 mongoDB 是否可以解决这个问题。如果它是正确的,我将如何将其添加到 MongoDB?我找不到有关如何将此 CORS 处理程序添加到 mongo

的文档
function handleCors(req, res, callback) {

    res.setHeader('Access-Control-Allow-Origin', '*')
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE,OPTIONS');
    res.setHeader('Access-Control-Allow-Headers', 'Authorization');

    // CORS OPTIONS request, simply return 200
    if (req.method == 'OPTIONS') {
        res.statusCode = 200;
        res.end();
        callback.onOptions();
        return;
    }

    callback.onContinue();
};

您的概念设计有问题。

  1. 你的post方法是直接命中TCP协议,不应该。
  2. 你应该根据服务器中的一些 Rest API 调用一些 http 请求。
  3. 在服务器路由中,您应该处理 CORS(http 请求),然后数据库层方法应该获取 Update/Select 等的数据。

顺便说一下,对于服务器路由,您可以使用高级节点框架,例如 expressjs

如果你想要一个完整的例子,你可以通过 want to look through this example 和 可以在 Single Page Application with Angular.js, Node.js and MongoDB - phloxblog.

中找到解释