2016-07-28 6 views
2

Ich habe eine sequelize Instanzmethode, die eine DB-Abfrage durchführt:Async Tabellenabfrage in sequelize Getter-Methode

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}); 
    }, 

, die vom Getter aufgerufen wird:

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'; 
     } 
    }); 
    } 
}, 

Das Problem ist, dass das Ergebnis, dass Wird vom Getter zurückgegeben, ist undefiniert, weil er das Versprechen vor der Rückkehr nicht lösen kann.

Da ich kein Modell für die Tabelle habe, wie kann ich dieses Problem lösen? Schon einen Tag lang dabei gewesen!

Vielen Dank.

Antwort

0

Wird das Versprechen, das von this.getPropertyDays zurückgegeben wird, nicht zurückgegeben?

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

Nicht wirklich von meinen Experimenten. Zum Beispiel gibt das toJSON des Modells die Eigenschaften des Versprechens gegenüber dem aufgelösten Wert des Versprechens aus, was nicht sehr hilfreich ist. – Kyle