# Controllo di esistenza su findAncestorModel

**URL:** <https://meta.discourse.org/t/existence-check-on-findancestormodel/182234>\
**Category:** Development\
**Created:** [5 Marzo 2021, 7:35pm UTC](https://meta.discourse.org/t/existence-check-on-findancestormodel/182234 "2021-03-05T19:35:00Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mbaker341997](https://avatars.discourse-cdn.com/v4/letter/m/c6cbf5/32.png) [@mbaker341997](https://meta.discourse.org/u/mbaker341997)\
**Post date:** [5 Marzo 2021, 7:35pm UTC](https://meta.discourse.org/t/existence-check-on-findancestormodel/182234/1 "2021-03-05T19:35:00Z")

</div>

Sto dando un’occhiata allo sviluppo dei plugin e ho notato che, in casi come quello del [discourse translator](https://github.com/discourse/discourse-translator/blame/ee317e06601788afdb8e33f1ca6e027563302d58/assets/javascripts/discourse/initializers/extend-for-translate-button.js.es6#L78), dopo aver recuperato un modello widget tramite `findAncestorModel()`, viene eseguita una verifica sull’esistenza del risultato prima di procedere. Vedo che questo accade anche nel codice sorgente, [per esempio](https://github.com/discourse/discourse/blob/72258c663ba15639daf0fc1c63dae9af7cd0ec37/app/assets/javascripts/discourse/app/widgets/post.js#L644):

```plaintext
  _getTopicUrl() {
    const post = this.findAncestorModel();
    return post ? post.get("topic.url") : null;
  },

```

Ma ci sono anche casi in cui non viene controllata l’esistenza del modello antenato, [qualche riga più sotto](https://github.com/discourse/discourse/blob/72258c663ba15639daf0fc1c63dae9af7cd0ec37/app/assets/javascripts/discourse/app/widgets/post.js#L652):

```plaintext
      const post = this.findAncestorModel();
      const controller = this.register.lookup("controller:topic");
      return post
        .get("topic.postStream")
        .filterUpwards(this.attrs.id)
        .then(() => {
          controller.updateQueryParams();
        });

```

Quanto è affidabile l’esistenza del risultato di `findAncestorModel`? Dipende dal widget in cui ci troviamo, o è buona norma gestire sempre una risposta null, anche in situazioni in cui sembra davvero improbabile, come nel menu del post?
