我正在使用 Mongojs 库,它是 mongodb 库的薄包装器。我想在会话集合中做一些查找查询,这意味着我使用 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")
}