有熟练sequelizejs的吗
发布于 10 年前 作者 klamtlne 8176 次浏览 最后一次编辑是 8 年前

现在项目中再用,数据库是MySQL,现在的实现方式把自己绕进死胡同了

逻辑上是以 customers 表的 id 为主键,在 shops 表和 devices 表中的 customer_id 为外键,进行增减查删,返还给前端:[{id: #, shop: #, device: #}, {id: #, shop: #, device: #}] 格式的数据

之前写的代码如下:

Customers

  // 声明一个全局变量保存数据
  var CUSTOMER_DATA = []

  var Customers = db.define('customers', {
    id: Sequelize.INTEGER
  })

Shops

  var Shops = db.define('shops', {}, {
    classMethods: {

      // 根据customer_id和参数id匹配,计算Shops中匹配的总数
      countShop: function (id, callback) {
        Shops
          .count({
            where: {
               company_id: id
            }
          })
          .complete(function (num) {
          callback(num)
        })
      }  
    }
  })

//(Devices代码同Shops大同小异)

最终计算代码

  Customers
    .findAll()
    .complete(function (error, customers) {
      customers.each(function (customer) {
          var data = {}
          data.id = customer.dataValues.id
          // 根据data.id,计算shops数量
          Shops.countShop(data.id, function (num) {
            data.shop = num
            // 把格式正确的数据放到全局变量中,这里卡住了,异步的话怎么确定each执行完了然后暴露出来
            CUSTOMER_DATA.push(data)
           })
      })
    })

感谢任何有帮助的回答!

5 回复

@Fakefish 泥垢了,奏凯

数组循环处理建议使用forEach

@huaoguo 是的,应该用 promise

回到顶部