2011-11-10 55 views
3

我使用Node.js的,並試圖在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_」字段。但是,我只想輸出「1320911838254」。

任何人都可以幫我嗎?


感謝您的回覆。但我試圖讓使用

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

爲Lycha先生髮布的數量,但在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?數據類型是自己定義的。有什麼方法可以更改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將數字存儲爲64bit對象,但javascript不支持這一點,這就是爲什麼他們必須擁有_low和_high。你可以得到的數量是這樣的:

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

閱讀here更多。您應該考慮使用日期對象。

相關問題