PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zwrócić wartość z obietnicy?

Staraj się unikać zagnieżdżania then , i utrzymuj płaski łańcuch obietnic. Co więcej, możesz połączyć dwa modele skrzynek w jeden fragment kodu (DRY). Na koniec użyj map zamiast forEach więc zwracasz tablicę obietnic, którą możesz następnie przesłać do Promise.all :

router.post('/devices', function (req, res, next) {
    var promises = loadash.map(req.body.devices, function (device) {
        return Device.forge()
            .where({deviceid: device.deviceid})
            .fetch({columns: ['id', 'mode']})
            .then(function (fetchedDevice) {
                var model = [Model_1, Model_2][fetchedDevice.get('mode')-1];
                if (model) {
                    return model.forge()
                        .where({device_id: fetchedDevice.get('id')})
                        .orderBy('epoch_time', 'DESC')
                        .fetch();
                }
            }).catch(function (err) {
                console.log(err);
            });
       });
    Promise.all(promises).then(function (currentData) {
        currentData = currentData.filter(model => model) // exclude undefined
            .map(model => model.toJSON());
        console.log('Final: ' +currentData); 
    });
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przechowywać godziny otwarcia sklepu w bazie danych SQL?

  2. Pule połączeń PostgreSQL:część 3 – Pgpool-II

  3. [Laravel]:SQLSTATE[3F000]:Nieprawidłowa nazwa schematu

  4. Boleśnie powolne zapytanie Postgresa używające WHERE w wielu sąsiednich wierszach

  5. Hibernate Tools nie może uzyskać informacji o indeksie z tabel Postgres