PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách trả lại giá trị từ Lời hứa

Cố gắng tránh lồng nhau then , và giữ cho chuỗi lời hứa phẳng lặng. Hơn nữa, bạn có thể nối hai trường hợp mô hình thành một đoạn mã (DRY). Cuối cùng, sử dụng map thay vì forEach vì vậy bạn trả về một mảng các lời hứa, sau đó bạn có thể cấp dữ liệu cho 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. POSTGRES SAO CHÉP TỪ CHƯƠNG TRÌNH vào một bảng động với các cột không xác định

  2. Hiệu suất truy vấn trong PostgreSQL bằng cách sử dụng 'tương tự như'

  3. Truy vấn SQL để tìm kiếm theo ngày / tháng / năm / ngày &tháng / ngày &năm, v.v.

  4. Doctrine2 không đặt trình tự thành mặc định cho cột id (postgres)

  5. Tính tổng theo tháng và đặt các tháng dưới dạng cột