Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 通过URL发布到mongodb_Node.js_Mongodb_Express - Fatal编程技术网

Node.js 通过URL发布到mongodb

Node.js 通过URL发布到mongodb,node.js,mongodb,express,Node.js,Mongodb,Express,我试图通过浏览器的URL将数据发布到mongo DB。我只使用expressJS就可以让它工作,但我很难让它与mongodb一起工作。我对这一点还很陌生,所以我希望我只是缺少了一个简单的组件,至少我在正确的轨道上 当我在url中输入“”或“”时,我希望在网页上看到“4SDFA3”。现在我刚刚收到一个网页,上面有这样一条消息:“看起来您正试图通过本机驱动程序端口上的HTTP访问MongoDB。” 这是我的server.js文件: // packages var express = require(

我试图通过浏览器的URL将数据发布到mongo DB。我只使用expressJS就可以让它工作,但我很难让它与mongodb一起工作。我对这一点还很陌生,所以我希望我只是缺少了一个简单的组件,至少我在正确的轨道上

当我在url中输入“”或“”时,我希望在网页上看到“4SDFA3”。现在我刚刚收到一个网页,上面有这样一条消息:“看起来您正试图通过本机驱动程序端口上的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 + ' ');
        }
    });
});

谢谢大家!

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

`$ mongod --rest`
你可以在网上阅读更多

在使用HTTP接口时,应该谨慎。从MongoDB文档中:

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


谢谢你的回复,虽然我不确定这将如何帮助我通过URL获得帖子。我尝试使用
mongod--rest启动mongod,但除了能够连接到
http://localhost:28017/
您不能通过URL发出
POST
请求。如果我要用上面我想用的monk之类的东西呢?还是根本没有解决办法?