code: function(prop) {
      // update the hash first
      cons.updateHash(prop)
        // then check the signatures
      var fieldSig = _.prod(
        _.map(cons.mandatoryFields, function(field) {
          return _.has(prop, field) && !_.isUndefined(prop[field]) && !_.isNull(prop[field]) ? true : false;
        }))
      if (!fieldSig) throw new Error("Node constraints violated: incomplete mandatoryFields.")
  
      // finally both passed
      return true;
    }
docs: Check if props has all the mandatory keys, with non-null/non-undefined values. Internally updates the hash as demanded by 'hash_by' for you.
  @private
  @param  {JSON}  props The JSON properties to be passed into query
  @return {Boolean}       Whether it has all the mandatory fields.
  
  @example
  var prop = {
  hash: 'hashStr0',
  hash_by: null,
  url: 'justanotherurl',
  name: 'A Design Document'
  }
  cons.pass(prop) // missing hash_by
  // => throws Error: Node constraints violated.
  
  var prop1 = {
  hash: 'hashStr0',
  hash_by: 'name',
  url: 'justanotherurl',
  name: 'A Design Document'
  }
  cons.pass(prop1) // missing 'name' as demanded by 'hash_by'
  // => throws Error: Node constraints violated.
  
  // make it legal
  cons.legalize(prop1)
  // prop1 is now legal
  // => prop1 = { hash: 'A Design Document',
  // hash_by: 'name',
  // url: 'justanotherurl',
  // name: 'A Design Document',
  // updated_by: 'bot',
  // updated_when: 1452802842068 }
  
  cons.pass(prop1)
  // => true