我有一个奇怪的问题,我似乎无法解释。鉴于以下情况:
Generics.prototype.getCollection= function(collection,callback) {
this.db.collection(collection, function(error, document_collection) {
if( error ) callback(error);
else callback(null, document_collection);
});
};
Generics.prototype.findById = function(collection, id, callback) {
this.getCollection(collection,function(error, document_collection) {
if( error ) callback(error)
else {
document_collection.findOne({_id: document_collection.db.bson_serializer.ObjectID.createFromHexString(id)}, function(error, result) {
if( error ) callback(error)
else callback(null, result)
});
}
});
};
Generics.prototype.findOne = function(collection, _key, _value, callback) {
this.getCollection(collection,function(error, document_collection) {
if( error ) callback(error)
else {
document_collection.findOne({_key:_value}, function(error, result) {
if( error ) callback(error)
else callback(null, result)
});
}
});
};
findById 就像一个魅力。但是,findOne 在执行时总是返回 null。我启动了 node-debugger 以找出交易是什么,我发现其中一个传递的变量正在以某种方式被破坏/擦除。_key 似乎总是被删除。_value 然而总是存在的。我尝试将 _key 重命名为其他名称,无论如何,它总是被删除。任何关于可能发生的事情的想法将不胜感激。谢谢!
更新 我只是重构了一下,以允许更灵活的搜索查询,并使其与一个变量一起工作。我还是想知道发生了什么。我觉得这是一些我不太了解的关闭业务。
Generics.prototype.findOne = function(collection, searchKeys, callback) {
this.getCollection(collection,function(error, document_collection) {
if( error ) callback(error)
else {
document_collection.findOne(searchKeys, function(error, result) {
if( error ) callback(error)
else callback(null, result)
});
}
});
};