2011-04-09 2 views
21

node.js/mongoDB/mongoose에서 첫 번째 테스트 응용 프로그램을 시작합니다. DB에 레코드를 저장하고 검색하는 매우 간단한 응용 프로그램입니다. 내가 정수 한 대신 속도 float 값을 제공 할 수 있도록하고 싶습니다 것을 제외하고node.js에 대한 몽구제의 십진수/부동 소수점

var Car = new Schema({ 
    brand : String, 
    speed : Number, 
    date : { type: Date, default: Date.now } 
}); 

이가 잘 작동 :

내가 좋아하는 모델을 만들 수 있습니다. Decimal과 Float에 시도해 봤지만 아무도 노력하고 있지 않습니다. 설명서에서 찾지 못했습니다.

아이디어가 있으십니까?

+0

'var car = new Car ({brand : "", speed : 0.5});' – skeggse

답변

29

나는 mongoose와 node.js에 익숙하지 않지만 약간 검색 한 결과 float 값을 저장하려면 Number 유형을 사용해야합니다. float 값은 speed 필드에 저장할 수 있습니다. Article.

희망 도움말.

+0

고마워. 그러나이 글에서는 float를 정수형으로 강제하는 것이 다른 방법으로 생각됩니다. 맞습니까? 미안, 내가 잘못한거야. – Luc

+1

@Luc : 정확하게, float를 정수로 강제하는 것에 관한 기사에서. 하지만 'Number'유형의 필드에 부동 소수점 값을 저장할 수 있다는 의미입니다. 따라서 정수형과 부동 소수점 형 모두 '숫자'유형을 사용해야합니다. –

+0

@ Bugain13, 고마워, 너 맞아. 처음부터는 작동하지 않았기 때문에 내가해야만했던 이상한 것이 있습니다. 도와 주셔서 정말로 고맙습니다 !!!! – Luc

0

mongoDB는 float 유형을 완벽하게 지원하지만 mongoose는 정수 유형 인 Number 만 지원합니다. mongooses 타입의 Number를 사용하여 mongoDB float number에 저장하려고하면 string으로 변환됩니다.

이 문제를 해결하려면 값 유형을 확장하는 몽구스 용 플러그인을로드해야합니다. 통화 또는 날짜와 함께 가장 잘 작동하는 플러그인이 있지만, 귀하의 경우에는 https://www.npmjs.com/package/mongoose-double을 사용합니다. 변경 후

귀하의 모델은 다음과 같이 보일 것입니다 :

var mongoose = require('mongoose') 
require('mongoose-double')(mongoose); 

var SchemaTypes = mongoose.Schema.Types; 
var Car = new Schema({ 
    brand: { 
     type: String 
    }, 
    speed: { 
     type: SchemaTypes.Double 
    }, 
    date: { 
     type: Date, 
     default: Date.now 
    } 
}); 

는 도움이되기를 바랍니다.

+2

아니요. 25.50과 같은 숫자를 숫자로 저장할 수 있으며 문자열로 저장되지 않습니다. – JWindey

관련 문제