1

私はmongodbライブラリの薄いラッパーであるMongojsライブラリを使用しています。セッション コレクションでいくつかの検索クエリを実行したいのですが、これは、mongo を使用してセッション (connect-mongo) を保存することを意味します。

問題はそれです

db.sessions.find({}, cb); -- returns all the sessions

req.sessionID - 文字列から取得した ID で特定のセッションを見つけようとすると、常にnullが返されます。

db.sessions.findOne({ _id: req.sessionID }, cb); -- yes the seesionId exists, when i execute this query manually it works

また、「mongodb」ライブラリを直接接続してみました。

var Db = require('mongodb').Db,
    MongoClient = require('mongodb').MongoClient,
    Server = require('mongodb').Server,
    ReplSetServers = require('mongodb').ReplSetServers,
    ObjectID = require('mongodb').ObjectID,
    Binary = require('mongodb').Binary,
    GridStore = require('mongodb').GridStore,
    Code = require('mongodb').Code,
    BSON = require('mongodb').pure().BSON,
    assert = require('assert');

var db = new Db(session.db, new Server(session.host, session.port,
 {auto_reconnect: false, poolSize: 4}), {w:0, native_parser: false});

function findBySid(sid, cb) {

    db.close();
    db.open(function(err, db) {

        db.collection('sessions').findOne({ _id: sid }, function(err, session) {

                cb(err, session);

        });
    })

構造自体はこのように見え、connect-mongo によって作成されます

> db.sessions.find({ _id: 'QFtHqaTdtg5kucwvBmY3BZ7m' }).pretty()
{
    "_id" : "QFtHqaTdtg5kucwvBmY3BZ7m",
    "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"domain\":\"asad.\",\"path\":\"/\"}}",
    "expires" : ISODate("2013-08-12T12:34:49.271Z")
}
4

1 に答える 1