通过网址

时间:2016-06-06 20:52:46

标签: node.js mongodb express

我正在尝试通过浏览器的URL将数据发布到mongo数据库。我只能使用expressJS让它工作,但我很难让它与mongodb一起工作。我还是很陌生,所以我希望我只是错过了一个简单的组件,而且我至少在正确的轨道上。

当我进入" http://localhost:27017/api/users?id=4&token=sdfa3"或" http://localhost:27017/nodetest5/api/users?id=4&token=sdfa3"进入网址,我想看到" 4 sdfa3"在网页上。现在我只是得到一个带有消息的网页:"看起来你正试图通过本地驱动程序端口上的HTTP访问MongoDB。"

这是我的server.js文件:

// packages
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var app = express();
var bodyParser = require('body-parser');

//db stuff
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodetest5');

app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded

//make accessible mongo db accessible to router
app.use(function(req, res, next){
    req.db = db;
    next();
})

// routes 
app.get('/api/users', function(req, res) {
    //get values from URL
    var id = req.param('id');
    var token = req.param('token');
    res.send(user_id + ' ' + token + ' ');
});

// POST to localhost
// parameters sent with
app.post('/api/users', function(req, res) {
    //internal DB value
    var db = req.db;

    //values from URL
    var user_id = req.body.id;
    var token = req.body.token;

    //set collection
    var collection = db.get('usercollection');

    //Submit to DB
    collection.insert({
        "id" : id,
        "token" : token
    }, function (err, doc){
        if (err) {
            res.send("Error encountered when trying to add entry to database.");
        }
        else {
            res.send(user_id + ' ' + token + ' ');
        }
    });
});

谢谢!

1 个答案:

答案 0 :(得分:3)

可以通过端口号28017访问MongoDB的HTTP接口。您需要向--rest提供mongod选项:

`$ mongod --rest`

您可以在HTTP Interface documentation中阅读更多内容。

使用HTTP界面时应小心谨慎。来自MongoDB文档:

  

警告
  确保在生产环境中禁用HTTP状态界面,REST API和JSON API,以防止潜在的数据暴露和攻击者的漏洞。