我想在INSERT
中使用node.js
实施Openshift
操作。但它不起作用。这就是我收到的。 http://nodejs-j4nos.rhcloud.com/UserSetting/firstName="Smith"&lastName="Mr"
我在日志文件中找不到任何内容。
一些无关紧要的界限:
[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
});
});
答案 0 :(得分:0)
openshift不支持分片,
尝试使用也有免费计划的mongolab可能是一个好主意,你会更好地准备扩展https://mongolab.com/
并且在nodejs中配置非常简单,只需输入主机名,端口,用户名和密码即可正常工作
答案 1 :(得分:0)
1)首先检查数据库的身份验证。
2)如果没有认证,则不执行插入(或任何)操作。
if (db.authenticate(mongoUser, mongoPassword.toCharArray()) == false) {
System.out.println("Failed to authenticate DB ");
}