Guest User

Untitled

a guest
Feb 18th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. var mongoose = require('mongoose')
  2. , Futures = require('futures')
  3. , Schema = mongoose.Schema
  4. , db = mongoose.connect('mongodb://localhost/mongoose-db');
  5.  
  6. var UserSchema = new Schema({
  7. "name": {type: String},
  8. "location": {
  9. "latitude": {type: Number, required: true, min: -90, max: 90},
  10. "longitude": {type: Number, required: true, min: -180, max: 180}
  11. }
  12. });
  13. mongoose.model('User', UserSchema);
  14.  
  15.  
  16. var User = mongoose.model('User')
  17. , sequence = Futures.sequence();
  18.  
  19. var saveUser = function(o, cb) {
  20. var user = new User(o);
  21. user.save(function(err, u) {
  22. if (err) {
  23. console.log(err);
  24. } else {
  25. console.log(u);
  26. }
  27. cb();
  28. });
  29. };
  30.  
  31. sequence
  32. .then(function(next) {
  33. /**
  34. * normal insert
  35. * -------------
  36. * { location: { longitude: 2.352, latitude: 48.867 },
  37. * _id: 4def70666a9e10e842000001,
  38. * name: 'hugues dubois' }
  39. **/
  40. saveUser({
  41. "name": "hugues dubois",
  42. "location": {
  43. "latitude": 48.867,
  44. "longitude": 2.352
  45. }
  46. }, next);
  47. })
  48. .then(function(next) {
  49. /**
  50. * normal insert
  51. * -------------
  52. * { location: { longitude: 2.352, latitude: 48.867 },
  53. * _id: 4def70666a9e10e842000001,
  54. * name: 'hugues dubois' }
  55. **/
  56. saveUser({
  57. "name": "hugues dubois",
  58. "location": {
  59. "latitude": "48.867",
  60. "longitude": "2.352"
  61. }
  62. }, next);
  63. })
  64. .then(function(next) {
  65. /**
  66. * normal error
  67. * -------------
  68. * { stack: [Getter/Setter],
  69. * message: 'Validation failed',
  70. * name: 'ValidationError',
  71. * errors: { 'location.latitude': 'Validator "min" failed for path location.latitude' } }
  72. **/
  73. saveUser({
  74. "name": "hugues dubois",
  75. "location": {
  76. "latitude": -91,
  77. "longitude": -180
  78. }
  79. }, next);
  80. })
  81. .then(function(next) {
  82. /**
  83. * normal error
  84. * -------------
  85. * { stack: [Getter/Setter],
  86. * message: 'Validation failed',
  87. * name: 'ValidationError',
  88. * errors:
  89. * { 'location.longitude': 'Validator "required" failed for path location.longitude',
  90. * 'location.latitude': 'Validator "required" failed for path location.latitude' } }
  91. **/
  92. saveUser({
  93. "name": "hugues dubois",
  94. "location": {
  95. "latitude": "",
  96. "longitude": ""
  97. }
  98. }, next);
  99. })
  100. .then(function(next) {
  101. /**
  102. * ERROR IN MONGOOSE THE NUMBER IS CASTED TO 0
  103. * -------------
  104. * { location: { longitude: 0, latitude: 0 },
  105. * _id: 4def749a3ff4c38543000004,
  106. * name: 'hugues dubois' }
  107. **/
  108. saveUser({
  109. "name": "hugues dubois",
  110. "location": {
  111. "latitude": " ", /*ERROR IN MONGOOSE THIS IS CASTED TO 0*/
  112. "longitude": " " /*ERROR IN MONGOOSE THIS IS CASTED TO 0*/
  113. }
  114. }, next);
  115. })
  116. .then(function() {
  117. db.disconnect();
  118. });
Add Comment
Please, Sign In to add comment