hasOne ID generation hack isn't needed because we're using firebase reference string as the cache identifier