code: func NewScanModelHandler(fieldNames []string, model Model) ReplyHandler {
  	// Create a modelRef that wraps the given model.
  	collection, err := getCollectionForModel(model)
  	if err != nil {
  		return newAlwaysErrorHandler(err)
  	}
  	mr := &modelRef{
  		collection: collection,
  		model:      model,
  		spec:       collection.spec,
  	}
  	// Create and return a reply handler using newScanModelRefHandler
  	return newScanModelRefHandler(fieldNames, mr)
  }
docs: // NewScanModelHandler returns a ReplyHandler which will scan all the values in
  // the reply into the fields of model. It expects a reply that looks like the
  // output of an HMGET command, without the field names included. The order of
  // fieldNames must correspond to the order of the values in the reply.
  //
  // fieldNames should be the actual field names as they appear in the struct
  // definition, not the Redis names which may be custom. The special field name
  // "-" is used to represent the id for the model and will be set by the
  // ReplyHandler using the SetModelID method.
  //
  // For example, if fieldNames is ["Age", "Name", "-"] and the reply from Redis
  // looks like this:
  //
  //   1) "25"
  //   2) "Bob"
  //   3) "b1C7B0yETtXFYuKinndqoa"
  //
  // The ReplyHandler will set the Age and the Name of the model to 25 and "Bob",
  // respectively, using reflection. Then it will set the id of the model to
  // "b1C7B0yETtXFYuKinndqoa" using the model's SetModelID method.