sequelize getter方法中的异步表查询

时间:2016-07-28 12:05:07

标签: node.js asynchronous promise sequelize.js getter

我有一个执行数据库查询的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});
  },

由getter调用:

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 :(得分:0)

赢回“{1}}从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';
      }
    });
  }
},