utils.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. var utils = module.exports = {
  3. /**
  4. * Convert BSONObj to a BSONObj with our $const wrappings.
  5. * @method constify
  6. */
  7. constify: function constify(obj, parentIsArray) {
  8. if (parentIsArray === undefined) parentIsArray = false;
  9. var bob = parentIsArray ? [] : {};
  10. for (var key in obj) {
  11. if (!obj.hasOwnProperty(key)) continue;
  12. var elem = obj[key];
  13. if (elem instanceof Object && elem.constructor === Object) {
  14. bob[key] = utils.constify(elem, false);
  15. } else if (Array.isArray(elem) && !parentIsArray) {
  16. // arrays within arrays are treated as constant values by the real parser
  17. bob[key] = utils.constify(elem, true);
  18. } else if (key == "$const" ||
  19. (typeof elem == "string" && elem[0] == "$")) {
  20. bob[key] = obj[key];
  21. } else {
  22. bob[key] = {$const: obj[key]};
  23. }
  24. }
  25. return bob;
  26. },
  27. //SKIPPED: assertBinaryEqual
  28. //SKIPPED: toJson
  29. /**
  30. * Convert Expression to BSON.
  31. * @method expressionToJson
  32. */
  33. expressionToJson: function expressionToJson(expr) {
  34. return expr.serialize(false);
  35. },
  36. //SKIPPED: fromJson
  37. //SKIPPED: valueFromJson
  38. };