2016-07-28 15 views
2

における非同期テーブルのクエリを:Iは、DBクエリを実行sequelizeインスタンスメソッドを有する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から返される値は未定義です。返す前に約束を解決できないからです。

私はテーブルのモデルを持っていないので、どうすればこの問題を解決できますか?これはすでに1日前から行っています!

ありがとうございます。

答えて

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

関連する問題