2016-07-28 74 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