I am building a small node.js website with a user interface that features a dropdown with a list of countries.

Previously the list of countries was hard coded in a json file that I would read:

```
exports.countries = require('./json/countries.json');

```

Then I realized I shouldn't hard code it like that when I can do a `distinct` query to the the list from the mongodb database.

```
db.collection.distinct('c', {}, function(err, data) {
  // something
});

```

But then there's the question of how to extract the value of the `data` variable in that callback function. I discovered that this works:

```
db.collection.distinct('c', {}, function(err, data) {
  if (err) {
    throw Error('mongodb problem - unable to load distinct values');
  } else {
    exports.countries = data;
  }
});

```

I am new to node.js and this seems fishy to me. Is this OK code? Is it better do this with generators or promises? If I wanted to use generators or promises to do this, how would I do that?

The end result where this is used is in a template. `ref.countries` is the actual list of countries using my fishy code. If I had a Promise instead of the list of countries, how would I change this code?

```
  <% ref.countries.forEach(function(c) { -%>
  <option value="<%= c %>">
    <%= ref.isoCodes[c] -%>
  </option>
  <% }); -%>

```

I am using node v6.10.3.