2011-11-10 3 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_"의 두 가지 필드가있는 출력을 제공합니다. 그러나 출력을 "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로 저장하는 방법은 무엇입니까? 데이터 유형 자체가 정의됩니다. 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 비트 객체로 저장하지만 자바 스크립트는이를 지원하지 않으므로 _low 및 _high가 있어야합니다. 당신은 번호를 다음과 같이 얻을 수 있습니다 :

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

읽기 here을 이상. 대신 date 객체를 사용하는 것을 고려해야합니다.

관련 문제