mongoose-type-phone
v1.0.1
Published
A phone field-type for Mongoose schemas
Downloads
257
Maintainers
Readme
mongoose-type-phone
A phone field-type for Mongoose schemas based on mongoose-type-email, mongoose-intl-phone-number and google-libphonenumber.
usage
This will validate phone, correctly:
var mongoose = require('mongoose');
var mongooseTypePhone = require('mongoose-type-phone');
var UserSchema = new mongoose.Schema({
phone: {
work: mongoose.SchemaTypes.Phone,
home: mongoose.SchemaTypes.Phone
}
});
You can also use the stuff in String
type:
var UserSchema = new mongoose.Schema({
phone: {
work: {type: mongoose.SchemaTypes.Phone, required: true},
home: {type: mongoose.SchemaTypes.Phone, required: true},
}
});
You can also use it as an array:
var UserSchema = new mongoose.Schema({
phones: [{type: mongoose.SchemaTypes.Phone}]
});
You can add 'allowBlank: true' in order to allow empty string ('') when the field is not required
var mongoose = require('mongoose');
var mongooseTypePhone = require('mongoose-type-phone');
var UserSchema = new mongoose.Schema({
phone: {
work: { type: mongoose.SchemaTypes.Phone, allowBlank: true }, // allows '' as a value
home: mongoose.SchemaTypes.Phone // throws when the value is ''
}
});
Here is the example with full set of available options:
var mongoose = require('mongoose');
var mongooseTypePhone = require('mongoose-type-phone');
var UserSchema = new mongoose.Schema({
phone: {
type: mongoose.SchemaTypes.Phone,
required: 'Phone number should be set correctly',
allowBlank: false,
allowedNumberTypes: [mongooseTypePhone.PhoneNumberType.MOBILE, mongooseTypePhone.PhoneNumberType.FIXED_LINE_OR_MOBILE],
phoneNumberFormat: mongooseTypePhone.PhoneNumberFormat.INTERNATIONAL, // can be omitted to keep raw input
defaultRegion: 'RU',
parseOnGet: false
}
});
contribution
This project needs your contribution! :-)
TODO
- Add tests for all options (only tests for
required
andallowBlank
are written now); - How can we avoid repeating of validation in
cast()
andcheckRequired()
? - Is it better to use custom class instead of prototype'ing String-type?
- Improve examples in README.md?
- Refactoring.