现在项目中再用,数据库是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)
})
})
})
感谢任何有帮助的回答!