2016-07-28 2 views
2

У меня есть метод экземпляра sequelize, который выполняет DB запрос:Асинхронный таблица запроса в методе sequelize геттерного

getPropertyDays() { 
    const queryString = ` 
     SELECT 
     state 
     FROM property_days 
     WHERE 
     DATE(day) = CURDATE() AND 
     property_id = :propertyId;`; 

    const replacements = {propertyId: this.id}; 
    return this.sequelize.query(queryString, {replacements: replacements, type: sequelize.QueryTypes.SELECT}); 
    }, 

, который вызывается с помощью геттера:

getterMethods: { 
    propertyState() { 
    var self = this; 
    const blockedDay = 'x'; 
    const unavailableDay = 'u'; 

    this.getPropertyDays().then(function(result) { 
     var state = result[0]['state']; 

     if (self.prospect || state == unavailableDay) { 
     return 'unavailable'; 
     } 
     if (state == blockedDay) { 
     return 'occupied'; 
     } 
     else { 
     return 'available'; 
     } 
    }); 
    } 
}, 

Проблема заключается в том, что результат, который возвращается с геттера, не определено, потому что он не может решить обещание перед возвратом.

Поскольку у меня нет модели для таблицы, как я могу решить эту проблему? Об этом уже целый день!

Большое спасибо.

ответ

0

Не вернет обещание, возвращенное с this.getPropertyDays сделать трюк?

getterMethods: { 
    propertyState() { 
    var self = this; 
    const blockedDay = 'x'; 
    const unavailableDay = 'u'; 

    return this.getPropertyDays().then(function(result) { 
     var state = result[0]['state']; 

     if (self.prospect || state == unavailableDay) { 
     return 'unavailable'; 
     } 
     if (state == blockedDay) { 
     return 'occupied'; 
     } 
     else { 
     return 'available'; 
     } 
    }); 
    } 
}, 
+0

Не совсем из-за моих экспериментов. Например, модель toJSON моделирует свойства обещания по сравнению с разрешенным значением обещания, что не так уж полезно. – Kyle

Смежные вопросы