mongo-lite を使用して、同じ db 接続から複数の mongo コレクションにアクセスしようとしています。以下は Express アプリのサンプルです。
var express = require('express') ;
var app = express();
var http = require('http');
var mongolite = require('mongo-lite');
db = mongolite.connect("mongodb://localhost/fnard", ['col1','col2']);
app.use(express.bodyParser());
app.use(app.router);
app.get('/', function(request, response){
db.collection('col1').insert({hi:5},function(){});
db.collection('col2').insert({hi:5},function(){});
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
http.createServer(app).listen(3000, function () {
console.log('Express server listening on port ' + '3000');
});
/でGETを実行すると発生するエラーは次のとおりです。
Error: A Server or ReplSetServers instance cannot be shared across multiple Db instances
ただし、次のコードを使用すると、GET は期待どおりにドキュメントを挿入します
var express = require('express') ;
var app = express();
var http = require('http');
var mongolite = require('mongo-lite');
db = mongolite.connect("mongodb://localhost/fnard", ['col1']);
db2 = mongolite.connect("mongodb://localhost/fnard", ['col2']);
app.use(express.bodyParser());
app.use(app.router);
app.get('/', function(request, response){
db.collection('col1').insert({hi:5},function(){});
db2.collection('col2').insert({hi:5},function(){});
console.log(request.body); // your JSON
response.send(request.body); // echo the result back
});
アクセスしたいコレクションごとに新しい接続を本当に作成する必要がありますか? mongo-lite docs は、これが当てはまらないことを示唆しているようです - .connect() オプションを使用すると、使用するコレクションを指定できますが、機能していないようです。