通过Node.js将Openshift中的基本REST插入操作导入MongoDB

时间:2015-05-18 16:23:28

标签: node.js mongodb rest openshift

我想在INSERT中使用node.js实施Openshift操作。但它不起作用。这就是我收到的。 http://nodejs-j4nos.rhcloud.com/UserSetting/firstName="Smith"&lastName="Mr"

enter image description here enter image description here

我在日志文件中找不到任何内容。

一些无关紧要的界限:

[nodejs-j4nos.rhcloud.com 5556b4c4fcf9336abf0000de]\> tail app-root/logs/nodejs.log 
DEBUG: Sending SIGTERM to child...
DEBUG: Running node-supervisor with
DEBUG:   program 'server.js'
DEBUG:   --watch '/var/lib/openshift/5556b4c4fcf9336abf0000de/app-root/data/.nodewatch'
DEBUG:   --ignore 'undefined'
DEBUG:   --extensions 'node|js|coffee'
DEBUG:   --exec 'node'
DEBUG: Starting child process with 'node server.js'
DEBUG: Watching directory '/var/lib/openshift/5556b4c4fcf9336abf0000de/app-root/data/.nodewatch' for changes.
Express server listening on port 8080

这是我的魔法代码,我在网络界面中设置了mongodb。密码/凭证能够看到。只是为了好玩,因为我不确定我是否通过npm安装了快速,mongoose模块。 BTW需要安装它们还是自动的?

var http = require('http');
var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

var connection_string = '127.0.0.1:27017/YOUR_APP_NAME';
// if OPENSHIFT env variables are present, use the available connection info:
if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
    connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
    process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
    process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
    process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
    process.env.OPENSHIFT_APP_NAME;
}

var MongoClient = require('mongodb').MongoClient;
// the client db connection scope is wrapped in a callback:
var _db;
MongoClient.connect('mongodb://'+connection_string, function(err, db) {
                    if(err) throw err;
                    _db = db
                    })

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
                              console.log('Express server listening on port ' + app.get('port'));
                              });

app.get('/', function (req, res) {
        res.send('Hello World!');
        });

app.post('/:collection', function(req, res) { //A
         var database = req.params.database;
         var collection = req.params.collection;
         var object = req.body;

         _db.save(collection, object, function(err,docs) {
                               if (err) { res.send(400, err); }
                               else { res.send(201, docs); } //B
                               });
         });

2 个答案:

答案 0 :(得分:0)

mongodb中的

openshift不支持分片,

尝试使用也有免费计划的mongolab可能是一个好主意,你会更好地准备扩展https://mongolab.com/

并且在nodejs中配置非常简单,只需输入主机名,端口,用户名和密码即可正常工作

答案 1 :(得分:0)

1)首先检查数据库的身份验证。

2)如果没有认证,则不执行插入(或任何)操作。

if (db.authenticate(mongoUser, mongoPassword.toCharArray()) == false) {
    System.out.println("Failed to authenticate DB ");
}