2016-05-12 16 views
-1

私はnodejs + expressとmongodbを使っています。ノード+ Mongodb + ObjectIdが動作しない

私は郵便番号を使用しており、APIにアクセスしています。 ObjectIdを使用すると、サーバーは何も応答しません。私が取り除いたのは良い仕事を意味する。 私はこの問題を解決できません。誰でも助けてください。

test.js

//Post Data: 
{ 
    "list_id": "56963e4dbcd5d4ff27ced0fbd" 
} 


var app = require('express'); 
var router = app.Router(); 
var server = require('./../../server'); 
var mongoUtil = require('./../../mongoUtil'); 
var ObjectId = require('mongodb').ObjectID; 

router.post('/share', function(req, res, next) { 

    var data = { 
     query : {} 
    }; 
    console.log(req.body['list_id']); 
    //printed 56963e4dbcd5d4ff27ced0fbd 

    console.log(data.query); 
    //printed {} 

    data.query = ObjectId(req.body['list_id']); 
    console.log(data.query); 
    //Here not getting any response 
    // this line not printed and server no response. 
    //Also tried the following things. but its not working. 
    // data.query['_id'] = new ObjectID(req.body['list_id']); 
    //data.query._id = ObjectId(req.body['list_id']); 

    var collection = mongoUtil.list; 
    collection.findOne(data.query, function(err, list) { 
     console.log(err); 
     console.log(list); 
     if (!err && list) { 
      res.send("Sucess"); 
      return; 
     } else { 
      res.send("Error"); 
      return; 
     } 
    }); 

}); 
+0

ObjectIDを含めるとどのようなエラーが発生していますか? – Venky

+0

私は何のエラーもありませんでした。サーバーが応答していません。 – RSKMR

+0

'ObjectId()'コンストラクタは、24バイトの16進文字列、12バイトのバイナリ文字列、または引数としての数値を期待していますが、ここで 'req.body ['list_id']'は単なる文字列です。 – chridam

答えて

1

56963e4dbcd5d4ff27ced0fbdは、長さが24である必要があります。しかし、それは25が、それがうまくいくかもしれない24であることを確認しています。

ObjectID() 
Constructor 
Create a new ObjectID instance 

class ObjectID() 
Arguments: 
id (string) – Can be a 24 byte hex string, 12 byte binary string or a Number. 
Returns:  
object instance of ObjectID 
+0

私はこれもうまくいっていませんでした。 – RSKMR

+0

FWIW、 'new'は必要ありません。 – robertklep

+0

@RSKMRは私の答えを編集しました。試してみる。 – Venky

関連する問題