Is there a way to enforce integer values on a number

25,944 views
Skip to first unread message

bingomanatee

unread,
Mar 18, 2011, 12:53:40 AM3/18/11
to Mongoose Node.JS ORM
I want whole number (integer) values in a field - is there any way to
enforce integer properties on a number field in the schema?

Richard Miller-Smith

unread,
Mar 18, 2011, 5:02:53 AM3/18/11
to mongoo...@googlegroups.com
I think there are a few ways, depending on whether you want to enforce it (via validation) or quietly round non-integer values (with a setter). Personally, I use the setter approach, e.g.

var mongoose = require('mongoose');
var util = require('util') ;

mongoose.connect('mongodb://localhost/ex_simple') ;

var intHolderSchema = new mongoose.Schema({
  'integer': { type: Number, set: function (v) { return Math.round(v) ;}}
}) ;

mongoose.model('intHolder', intHolderSchema) ;
var intHolder = mongoose.model('intHolder') ;

var int1 = new intHolder({ integer: 3.1415 }) ;
util.debug(JSON.stringify(int1)) ;
int1.integer = 10.543 ;
util.debug(JSON.stringify(int1)) ;

mongoose.disconnect() ;


Regards,
Richard
Reply all
Reply to author
Forward
0 new messages