2012-03-17 22 views
0

mongo DBからエントリを削除する際に問題があります。イム私はMongoへの入力を削除する

ArticleProvider.prototype.findById = function(id, callback) { 
    this.getCollection(function(error, article_collection) { 
     if(error) callback(error) 
     else { 
     article_collection.findOne({_id: article_collection.db.bson_serializer.ObjectID.createFromHexString(id)}, function(error, result) { 
      if(error) callback(error) 
      else callback(null, result) 
     }); 
     } 
    }); 
}; 

であり、それは魔法のように動作し、単一の物品を返却する機能を持っているので問題にnode-mongodb-native

コードを使用すると、

ArticleProvider.prototype.delete = function(id, callback) { 
    this.getCollection(function(error, article_collection) { 
     if(error) callback(error) 
     else { 
     article_collection.findAndRemove({_id: article_collection.db.bson_serializer.ObjectID.createFromHexString(id)}, function(error, result) { 
      if(error) callback(error) 
      else callback(null, result) 
     }); 
     } 
    }); 
}; 

その奇妙な問題である

これは私のエラーです

500 TypeError: Cannot read property 'length' of undefined 
at Function.createFromHexString (/Users/username/express_blog/node_modules/mongodb/lib/mongodb/bson/objectid.js:226:22) 

idのタイプに問題があるようです(そう思われます)。

答えて

1

渡す引数は未定義である必要があります。

この関数の現在のバージョンのソースは、the newest one I could find on githubです。ここでは、フレームワークのコードは(typeof hexString === 'undefined')

ObjectID.createFromHexString = function createFromHexString (hexString) { 
    // Throw an error if it's not a valid setup 
    if(hexString != null && hexString.length != 24) throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters in hex format"); 

    var len = hexString.length; 

    if(len > 12*2) { 
    throw new Error('Id cannot be longer than 12 bytes'); 
    } 

    var result = '' 
    , string 
    , number; 

    for (var index = 0; index < len; index += 2) { 
    string = hexString.substr(index, 2); 
    number = parseInt(string, 16); 
    result += BinaryParser.fromByte(number); 
    } 

    return new ObjectID(result); 
}; 
+0

えっを処理しないことを

注、私はそれがrequest.params.idされている必要があるとき、私はrequest.param.idを渡したと思い、愚かな過ちを嫌い...ありがとう! –

+0

私はその気持ちを知っています。私は提出した後に何かをねじ込んだことに気づかずに、ギターにプルリクエストをすることはできません。 – dwerner

関連する問題