2011-11-10 21 views
3

私はNode.jsのを使用してfolowingコードでのMongoDBデータベースのタイムスタンプデータを格納しようとしています:Node.jsを使用してMongodbからNumberLongデータを抽出するには?

`articleProvider.saveUser({ 
     userID : user, 
     email : email, 
     address : "", 
     time : new Date().getTime(), 
     },function(error,userData){ 
       if(!userData){ callback(error);} 
       else{ callback(null,userData);} 
      }); 
     } 
    });` 

し、データベースに格納されたデータは、(モンゴシェルから)です:

{ "userID" : "hem", "email" : "[email protected]", "address" : "Kathmandu", "time" : NumberLong("1320911838254"), "_id" : ObjectId("4ebb83dea7dd40990e000002") } 

しかし、私はコンソールNode.jsの中のデータを検索する場合、出力は次のようになります。

{ userID: 'hem', 
    email: '[email protected]', 
    address: 'Kathmandu', 
    time: { low_: -1938088914, high_: 307 }, 
    _id: 4ebb83dea7dd40990e000002 } 

今、私の質問は、フィールド「時間」ウィットのこの値を取得する方法ですh NumberLongデータ?

"low_"と "high_"という2つの異なるフィールドが出力されます。しかし、私は出力だけ "1320911838254"します。

誰でも手伝いできますか?


お返事ありがとうございます。しかし、私は

氏Lychaとして
var value = new Long(low_bits, high_bits).toNumber(); 

が投稿した使用数を取得しようとしたが、Node.jsのプラットフォームでは、と「ロングが定義されていません」というエラーを示しています。

var value = new Long(user.time.low_, user.time.high_).toNumber(); 
ReferenceError: Long is not defined 
at /home/developer/Desktop/Express/app.js:65:1 
at /home/developer/Desktop/Express/public/js/processData.js:76:10 
at /home/developer/Desktop/Express/public/js/dbQuery.js:196:16 
at [object Object].<anonymous> (/home/developer/node_modules/mongodb/lib/mongodb/collection.js:743:5) 
at [object Object].emit (events.js:67:17) 
at [object Object].<anonymous> (/home/developer/node_modules/mongodb/lib/mongodb/connections/server.js:97:12) 
at [object Object].emit (events.js:64:17) 
at Socket.<anonymous> (/home/developer/node_modules/mongodb/lib/mongodb/connection.js:161:16) 
at Socket.emit (events.js:64:17) 
at Socket._onReadable (net.js:678:14) 

node.jsで長いパーサーを取得するにはどうすればよいですか?何か案が?

応答にstradaを感謝します。しかし、MongodbにdateObjectとして保存する方法は? DataType自体が定義されています。 Mongodbのデータ型を変更する方法はありますか? それを解析する方法は?

答えて

3

私は長い練習の後に最善の解決策を見つけた:

articleProvider.saveUser({ 
    userID : user, 
    email : email, 
    address : "", 
    time : new Date().getTime().toString(), 
    },function(error,userData){ 
      if(!userData){ callback(error);} 
      else{ callback(null,userData);} 
     }); 
    } 
}); 

ストア「のtoString()」とクエリの後に、「使用して整数値に文字列オブジェクトを変更を使用して文字列オブジェクトとして日付オブジェクトparseInt() "

これは本当に簡単で良いソリューションだと思います。

1

MongoDBは番号を64ビットオブジェクトとして保存しますが、JavaScriptはそれをサポートしていません。そのため、_lowと_highが必要です。多くのため

var value = new Long(low_bits, high_bits).toNumber(); 

読むhere:あなたは、このような番号を取得することができます。代わりに、日付オブジェクトを使用することを検討する必要があります。

関連する問題