code: func (n *node) One(fieldName string, value interface{}, to interface{}) error {
  	sink, err := newFirstSink(n, to)
  	if err != nil {
  		return err
  	}
  
  	bucketName := sink.bucketName()
  	if bucketName == "" {
  		return ErrNoName
  	}
  
  	if fieldName == "" {
  		return ErrNotFound
  	}
  
  	ref := reflect.Indirect(sink.ref)
  	cfg, err := extractSingleField(&ref, fieldName)
  	if err != nil {
  		return err
  	}
  
  	field, ok := cfg.Fields[fieldName]
  	if !ok || (!field.IsID && field.Index == "") {
  		query := newQuery(n, q.StrictEq(fieldName, value))
  		query.Limit(1)
  
  		if n.tx != nil {
  			err = query.query(n.tx, sink)
  		} else {
  			err = n.s.Bolt.View(func(tx *bolt.Tx) error {
  				return query.query(tx, sink)
  			})
  		}
  
  		if err != nil {
  			return err
  		}
  
  		return sink.flush()
  	}
  
  	val, err := toBytes(value, n.codec)
  	if err != nil {
  		return err
  	}
  
  	return n.readTx(func(tx *bolt.Tx) error {
  		return n.one(tx, bucketName, fieldName, cfg, to, val, field.IsID)
  	})
  }
docs: // One returns one record by the specified index