2016-07-28 90 views
2

我有執行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'; 
     } 
    }); 
    } 
}, 

的問題是,其結果是從getter返回的是未定義的,因爲他在返回之前無法解決承諾。

由於我沒有表格模型,我該如何解決這個問題?已經在這附近已經有一天了!

非常感謝。

回答

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將輸出promise的屬性與promise的解析值,這並不是那麼有用。 – Kyle